1.元類(metaclass)是用來建立類的類
2.type(object):返回乙個物件的型別,與object.__class__的值相同,type(name,bases,dict):建立乙個新的type型別,name就是新class的name,值存到__name__屬性中,bases是tuple型別,值會存到__bases__中,dict的值存到__dict__中
class x:
... a = 1
x = type('x', (object,), dict(a=1))
3.類預設是用type()建立的,通過定義類時指定metaclass引數或繼承自某個類,而該類指定了metaclass引數,可以自定義類的建立過程
class orderedclass(type):
#該方法返回值就是__new__的namespace引數,如果沒有該方法namespace的值就是dict()
@classmethod
def __prepare__(metacls, name, bases, **kwds):
return collections.ordereddict()
#namespace就是class的__dict__,這個dict型別的物件已經被填充了相應的值
def __new__(cls, name, bases, namespace, **kwds):
result = type.__new__(cls, name, bases, dict(namespace))
result.members = tuple(namespace)
return result
class a(metaclass=orderedclass):
def one(self): pass
def two(self): pass
def three(self): pass
def four(self): pass
print(a.members)
#('__module__', '__qualname__', 'one', 'two', 'three', 'four')
python元類的使用 Python的元類如何使用
這次給大家帶來python的元類如何使用,使用python元類的注意事項有哪些,下面就是實戰案例,一起來看一下。今天我的任務就是徹底明白什麼是元類,一起看看。要搞懂元類,我們還是先從物件說起。python 一切皆物件,這句話你一定有聽說過 現在你就聽說了 乙個數字是物件,乙個字串是物件,乙個列表是物...
python元類的使用 python使用元類
原文 type 動態語言和靜態語言最大的不同,就是函式和類的定義,不是編譯時定義的,而是執行時動態建立的。比方說我們要定義乙個hello的class,就寫乙個hello.py模組 當python直譯器載入hello模組時,就會依次執行該模組的所有語句,執行結果就是動態建立出乙個hello的class...
python元類的使用 Python 元類使用講解
我要一大群的類都具有一種特點,我怎麼給他們加上呢?模板嘛,我從這個模板建立一群類不就ok了?那就需要元類了。定義乙個元類 就是乙個類的模板!莫多想,還要記住這是類級別的,不是物件級別的!如下 class mymeta type def init cls,name,bases,dic print cl...