本文實例講述了python中元類用法,分享給大家供大家參考。具體方法分析如下:
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中元類用法實例
本文地址: http://www.cppcns.com/jiaoben/python/114645.html