|

楼主 |
发表于 2024-4-16 09:47:38
|
显示全部楼层
class MetaClass(type):
def __new__(cls, name, bases, attrs):
print("元类的__new__()方法被调用")
return super().__new__(cls, name, bases, attrs)
def __init__(cls, name, bases, attrs):
print("元类的__init__()方法被调用")
super().__init__(name, bases, attrs)
def __call__(cls, *args, **kwargs):
print("元类的__call__()方法被调用")
return super().__call__(*args, **kwargs)
class MyClass(metaclass=MetaClass):
def __new__(cls, *args, **kwargs):
print("类的__new__()方法被调用")
return super().__new__(cls)
def __init__(self, *args, **kwargs):
print("类的__init__()方法被调用")
super().__init__(*args, **kwargs)
obj = MyClass()
元类__call__方法返回是个什么值?元类__call__方法中的super().__call__(*args, **kwargs)会调用元类MetaClass的`__new__()`和`__new__()`方法来创建一个类对象,并返回该类对象?
还是再定义完类的时候直接触发,也就是在obj = MyClass()之前触发?
@FishC |
|