0
点赞
收藏
分享

微信扫一扫

python 创建类先执行metaclass父类__new__ > __init__>__call__ 然后再执行自己的__new__>__init__

陆公子521 2022-06-27 阅读 27

class MyType(type):

def __init__(self,*args,**kwargs):


print("Mytype __init__",*args,**kwargs)


def __call__(self, *args, **kwargs):

print("Mytype __call__", *args, **kwargs) obj = self.__new__(self) print("obj ",obj,*args, **kwargs) print(self) self.__init__(obj,*args, **kwargs) return obj


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

print("Mytype __new__",*args,**kwargs) return type.__new__(cls, *args, **kwargs)


print('here...')

class Foo(object,metaclass=MyType):



def __init__(self,name):

self.name = name


print("Foo __init__")


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

print("Foo __new__",cls, *args, **kwargs) return object.__new__(cls)


f = Foo("Alex")

print("f",f) print("fname",f.name)

举报

相关推荐

0 条评论