Python高階之 元類

2021-10-01 14:33:30 字數 966 閱讀 4650

# 幾個魔術方法: __new__、__init__、__call__

# __new__: 物件的建立,是乙個靜態方法,第乙個引數是cls;(想想也是,不可能是self,物件還沒建立,哪來的self)

# __init__ : 物件的初始化, 是乙個例項方法,第乙個引數是self;

# __call__ : 物件可call,注意不是類,是物件。

class bar(object):

def __new__(cls, *args, **kwargs):

self = super(bar,cls).__new__(cls)

# self = super().__new__(cls) python3

print('__new__')

return self

def __init__(self,*args):

print('__init__')

self.name = args[0]

# 執行

b = bar('haha')

print(b.name)

# class a(object):

# pass

## a = a() # 建立類a的乙個例項

## print(type(a))

# 建立類 type

# 定義乙個函式

def func(self):

print("汪汪")

dog = type('dog',(object,),dict(say=func))

dog = dog()

dog.say()

# 元類

# 元類 ---> 類 ---> 例項

# 通過元類來修改類的屬性

# 使用了__new__()修改類的屬性

# class uppermeat(type):

# def __

python高階 元類

1.1 什麼是元類 元類就是用來建立類的 東西 python中類也是一種物件 定義乙個類 python直譯器在執行的時候會建立乙個物件 class ai object pass print type ai 1.2 使用type建立類 type可以動態的建立類 type 類名,由父類名組成的元組,屬性...

Python高階程式設計 元類程式設計

class people def init self,name self.name name property defname self return self.name name.setter defname self,value self.name value getattr 是在找不到屬性的時...

Python基礎到高階 元類metaclass

一切源自於一句話 python中一切皆為物件。讓我們先定義乙個類,然後逐步分析 class oldboyteacher object school oldboy def init self,name,age self.name name self.age age defsay self print ...