我(在我看来)有一个有点奇怪的问题。我在下面定义了同时定义了init和new的类:
class Test:
def __init__(self, num1):
self.num1 = num1
def __new__(cls, *args, **kwargs):
new_inst = object.__new__(cls)
new_inst.__init__(*args, **kwargs)
new_inst.extra = 2
return new_inst
如果正常使用,效果很好:
test = Test(1)
assert test.extra == 2
但是,它不会复制。Deepcopy:
import copy
copy.deepcopy(test)
给予
TypeError: __init__() missing 1 required positional argument: 'num1'
这可能与Decorating class with class wrapper and __new__有关-我无法确切看到,但我在这里尝试类似的事情-我需要new将类包装器应用于创建的Test实例。] >
非常感谢收到任何帮助!
我(在我看来)有一个有点奇怪的问题。我在下面定义了一个具有init和new定义的类:类测试:def __init __(self,num1):self.num1 = num1 def ...
[从技术上讲,从__init__
调用__new__
并不是问题,但是当__init__
返回实例后会自动发生对__new__
的调用,这是多余的。
OK-这是因为我做错了-我不应该从new