2017-04-06 63 views
0

我正在编写一个元类,并覆盖__new____init__以具有(相同)自定义参数。当我从重写的方法调用它们时,我必须将完全相同的参数传递给type.__new__type.__init__吗?必须输入.__ new__和type .__ init__传递相同的参数吗?

如果没有必要,这将是有用的,因为我反过来从我的元类继承并进一步专门化。在这些小类中,我正在做我的__init__方法的大部分工作。如果我必须将相同的参数传递给type.__new__type.__init__,我将不得不在所有子类中覆盖__new__

回答

0

Python文档object.__new__作为接收参数,最终将传递到__init__。因此,如果Python打电话给你的__new__,那就是你将要得到的。 (当然除了第一个参数,这将是__new__调用中的类和__init__调用中的实例。)

检查新结果。如果它是该类的一个实例,则调用__init__

在我看来,如果__new__是基于参数分配数据,那么它会分配错误的数据,如果它给了错误的参数。

所以我会说,除非你有一个特定的用例记住你知道你的参数不影响对象的创建,你应该遵循协议。

相关问题