有些地方还有一点模棱两可,先放在这,周六抽一个上午把这个整理完
元类中
_init_: 控制类的产生,在__new__之后
_call_: 控制对象的产生
_new_: 控制类产生最根上,其实本质最根上也不是它,是type的__call_,但是我们看不到了
object.__new__(Person) #生成Person类的对象 空的
type.__new__(cls, name, bases, dic) #生成cls这个类对象,里面有东西
#模板:控制对象的产生
class Mymeta(type):
def __call__(self, *args, **kwargs):
obj = object.__new__(self) #先new一个对象
obj.__init__(*args, **kwargs) #在初始化对象
return obj
class Person(metaclass=Mymeta):
def __init__(self,name):
self.name = name
def __call__(self, *args, **kwargs):
print('XXXX')
p = Person('lqz')
原文地址:https://www.cnblogs.com/michealjy/p/11469311.html
时间: 2024-10-19 16:07:46