type.__new__(cls, name, bases, attrs) type(cls,xx)区别?

水哥_____
  • 194

初学python,看到metaclass的时候, 对于生成'类'对象的时候,metaclass的__new__方法里面返回 生成的'类'对象,
type本身就是一个元类,那
return type.__new__(cls, name, bases, attrs) 和 return type(cls, name, bases, attrs)有啥不同呢?

回复
阅读 3.1k
2 个回答

type.__new__()调用的是type类的类方法__new__或者静态方法__new__
type()是使用type的__init__()方法新建一个type实例或者调用type类的静态__call__()方法或者类方法__call__()(典型的就是求一个对象的类型type("Hello"))

type()只接受一个或三个参数,一个参数返回对象的type,三个参数一般返回新的type类,类型是<class 'type'>
type.__new__(),会创建一个type类的实例,类型是class '__main__.cls',

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏