Python のメタクラスの簡単な分析
メタクラスは通常、クラスを作成するために使用されます。クラス定義を実行するとき、インタプリタはクラスの正しいメタクラスを知っている必要があります。インタプリタはまずクラス属性 __metaclass__ を探します。この属性が存在する場合は、この属性をそのクラスにメタクラスとして割り当てます。この属性が定義されていない場合、親クラスで __metaclass__ が検索され、__metaclass__ 属性がまだ見つからない場合、インタープリターは __metaclass__ という名前のグローバル変数を確認し、存在する場合はそれをメタクラスとして使用します。それ以外の場合、クラスはメタクラスとして types.ClassType を持つ従来のクラスです。
クラス定義を実行するとき、このクラスの正しい (通常はデフォルトの) メタクラスがチェックされます。メタクラスは (通常) 3 つのパラメーターを (コンストラクターに) 渡します: クラス名、基本クラスから継承されたデータのタプル、および(クラスの) 属性辞書。
メタクラスはいつ作成されますか?
#!/usr/bin/env python print '1. Metaclass declaration' class Meta(type): def __init__(cls, name, bases, attrd): super(Meta,cls).__init__(name,bases,attrd) print '3. Create class %r' % (name) print '2. Class Foo declaration' class Foo(object): __metaclass__=Meta def __init__(self): print '*. Init class %r' %(self.__class__.__name__) # 何问起 hovertree.com print '4. Class Foo f1 instantiation' f1=Foo() print '5. Class Foo f2 instantiation' f2=Foo() print 'END' 输出
結果:
*. Init class 'Foo'
END
クラスが宣言されると、後でクラスオブジェクトの時間を定義するときに __init__( ) クラスのメソッドが呼び出されます。MetaClass の __init__() は、クラスの宣言時に 1 回だけ実行されます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。
