ホームページ  >  記事  >  バックエンド開発  >  Pythonのメタクラスとは何ですか

Pythonのメタクラスとは何ですか

little bottle
little bottleオリジナル
2019-05-24 17:36:314091ブラウズ

Python のメタクラスは、クラスの作成に使用されるオブジェクトを指します。 Python の type() 関数は実際にはメタクラスであり、すべてのクラスのメタクラスを作成するために使用されます。カスタム メタクラスを作成する場合は、type も継承する必要があります。

Pythonのメタクラスとは何ですか

Python では、クラスもオブジェクトです。class キーワードを使用してクラスを作成すると、Python インタープリターはクラス定義の構文をスキャンするだけです。 type() 関数を呼び出してクラスを作成します。では、何がクラスを作成するか知っていますか?実際、彼はメタクラスです。

メタクラスとは何ですか?

メタクラスは、実際にはクラスの作成に使用されるオブジェクトです。

理解を助けるために、次のように考えることができます: クラスのインスタンスを作成するためにクラスを作成します。同様に、クラスを作成するためにメタクラスを作成します。

メタクラスは、次のようなクラス のクラス (インスタンス) です。

Metaclass() = class
class() = object # object==>实例

メタクラスとは何かを理解して、型 ( )関数。

実際、type はメタクラスであり、type はすべてのクラスの作成に使用するメタクラスです。 (独自のメタクラスを作成したい場合は、型からも継承する必要があります)

メタクラスの仕組み:

次の例を見てみましょう

class ReedSunMetaclass(type):
    pass
class Foo(object, metaclass = ReedSunMetaclass): 
    pass
class Bar(Foo):
    pass

最初に、メタクラス ReedSunMetaclass

を作成しました (注意! デフォルトの習慣によれば、メタクラスのクラス名は常に Metaclass で終わるため、これは明らかに次のことを示しています)これはメタクラスです)。

次に、メタクラス ReedSunMetaclass を使用して Foo クラスを作成しました。

(同時に、Foo クラスの属性 __metaclass__ は ReedSunMetaclass になります)。

最後に、Foo を継承するサブクラス Bar を作成しました。

これらのステップが Python 内でどのように実行されるかを理解してみましょう:

親クラス Foo の場合、Python はクラスの定義で _ を検索します。見つかった場合、Python はそれを使用してクラス Foo を作成します。見つからなかった場合、組み込み型を使用してこのクラスを作成します。どうやら、見つかったようです。

サブクラス Bar の場合、Python は最初にサブクラス内の __metaclass__ 属性を検索します。見つかった場合、Python はそれを使用してクラス Bar を作成します。見つからない場合は、親クラスから再度検索します。タイプ。どうやら、親クラスで見つかったようです。

メタクラスを使用する利点の 1 つは、サブクラスが暗黙的に何かを継承できることです。

以上がPythonのメタクラスとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。