Python のメタクラスは、クラスの作成に使用されるオブジェクトを指します。 Python の type() 関数は実際にはメタクラスであり、すべてのクラスのメタクラスを作成するために使用されます。カスタム メタクラスを作成する場合は、type も継承する必要があります。
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 サイトの他の関連記事を参照してください。