我正在编写元类并覆盖__new__
和__init__
以具有(相同的)自定义参数。当我从重写的方法中调用它们时,我必须将完全相同的参数传递给type.__new__
和type.__init__
吗?
如果没有必要,那将是有用的,因为我反过来继承我的元类以进一步专门化它。在这些子类中,我正在使用__init__
方法完成大部分工作。如果我必须将相同的参数传递给type.__new__
和type.__init__
,我必须覆盖所有子类中的__new__
。
答案 0 :(得分:0)
Python文档object.__new__
接收最终传递给__init__
的参数。因此,如果 Python 正在调用您的__new__
,那就是您将要获得的内容。 (当然,第一个参数除外,它将是__new__
调用中的类和__init__
调用中的实例。)
检查新结果。如果它是类的实例,则调用__init__
。
在我看来,如果__new__
根据参数分配数据,那么如果给出错误的参数,它将分配错误的数据。
所以我想说,除非你知道你的参数不会影响对象的创建,否则你应该遵循特定的用例,你应该遵循协议。