python元類的使用 python中元類用法例項

2021-10-11 12:51:35 字數 1054 閱讀 5519

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...