为什么调用父类的 __new__
方法要传入子类的 cls
不过有趣的是,我把 args 里的值改了之后,生成的类对象的名字也变了 ~
但是这好像就和子类的 cls 没有任何关系,为什么还要穿这个参数呐
而且调用父类的 __new__
传入的 不应该是父类class嘛
class MetaClass(type):
def __new__(cls, *args, **kwargs):
# 将生成对象的过程委托给
# 这里生成什么对象取决于 传给 args 的参数
# 因为参数中是 User 所以生成的对象叫 User
# args = ('hello',) + args[1:]
# args[2]['__qualname__'] = 'helloUser'
print(super().__new__(cls, *args, **kwargs))
print(isinstance(super().__new__(cls, *args, **kwargs), cls))
print(id(super().__new__(cls, *args, **kwargs)) == id(cls))
print(cls)
return super().__new__(cls, *args, **kwargs)
class User(metaclass=MetaClass):
pass
user = User()