今回はPythonのメタクラスの使い方と、Pythonメタクラスを使用する際の注意点を紹介します。実際の事例を見てみましょう。
今日の私の課題は、メタクラスとは何かを徹底的に理解することです。見てみましょう。
メタクラスを理解するには、オブジェクトから始めましょう。
Object (Object)
Python すべてはオブジェクトです、あなたはこの文を聞いたことがあるはずです(今聞いたことがあるでしょう)、数値はオブジェクトです、文字列はオブジェクトです、リストはオブジェクトであり、辞書もオブジェクトです。例:
>>> i = 10 >>> s = "abc" >>> nums = [1,2,3] >>> dicts = {"name":"zhang"}
等号の右側はオブジェクトであり、左側はこれらのオブジェクトに付けられた名前です。どのオブジェクトにも 3 つの主要な属性があります: ID、値。と入力します。
識別
識別は、個人の ID カード ID と同じであり、ライフサイクルを通して変化しません。コンピュータのメモリのアドレス。オブジェクトの ID は、関数 id() を通じて表示できます。
>>> id(i) 40592592 >>> id(s) 44980584
オブジェクトの値
オブジェクトの 2 番目の属性は値です。たとえば、i の値は 10、s の値は abc、nums の値は分かりやすいです。は1、2、3です。
型
オブジェクトのもう 1 つの重要な属性は型です。たとえば、上記の i の型は int 型から構築されます。整数。 s 型は文字列型、nums 型はリスト型、dicts 型はすべて対応する型から構築されます。 type() を通じてオブジェクトの型を確認できます。>>> type(i) <class 'int'> >>> type(s) <class 'str'> >>> type(nums) <class 'list'> >>> type(dicts) <class 'dict'>
クラスと(インスタンス)オブジェクト
システムによって定義されている整数型、文字列型、リスト、その他の型に加えて、キーワードで定義された独自の型を作成することもできます。クラス 。例:
>>> class Person: # 这里的 self 指某个实例对象自己 ... def init(self, name): # name 是实例的属性 ... self.name = name # live 是类的属性 live = True
>>> p1 = Person("zhangsan") >>> p1.name 'zhangsan' >>> >>> p2 = Person("lisi") >>> p2.name 'lisi'
>>> p1 <main.Person object at 0x0195AA30> >>> type(p1) <class 'main.Person'> # 这里的main是模块名称
クラスもオブジェクトです (クラスオブジェクトとも呼ばれます)
今、すべてがオブジェクトであり、インスタンス (実車) もオブジェクトであり、クラス (モールド) ももちろんオブジェクトであると言いました。存在するものでもあります。 Python インタプリタがキーワード クラス命令を実行すると、内部で「person」という名前のクラスが作成されます。このクラスもオブジェクトです (インスタンス間の違いに注意してください)。 ).オブジェクト)、ID、タイプ、および値もあります。例:>>> id(Person) 26564024 >>> type(Person) <class 'type'> >>> Person <class 'main.Person'>
>>> nums = [1,2,3] >>> type(nums) <class 'list'> >>> type(list) <class 'type'>
现在我们都知道类(对象)可以使用 class 关键字创建,我们还知道类(对象)的类型是 type,既然知道了它的类型是 type,那么肯定可以通过 type(元类)来创建。
用元类创建类
前面讲到过,type 有一个作用是用于检查对象的类型,其实它还有另外一个作用就是作为元类动态地创建类(对象)。
>>> Person = type("Person", (), {"live":True}) >>> Person <class 'main.Person'>
Person 就是一个类,它等价于:
>>> class Person: ... live = True ... >>> Person <class 'main.Person'>
用元类 type 创建类的语法是:
type(类名,基类元组(可以为空), 属性字典)
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がPython メタクラスの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。