有一个类Foo:
class Foo:
def __init__(self, data = None):
if data == None:
self.__del__()
def __del__(self):
print('Error')
f = Foo() # Error
print(f) # <__main__.Foo object at 0x7fc1210de1d0>
我有这个问题:
如果创建了一个类的实例,我需要检查一个参数是否被传递data。如果不是,则应取消类创建。我从一个方法调用一个__init__方法__del__,但实例保留在内存中,这可以用print(f). 我已经这样做过一次,也许我忘记了什么,但我根本不明白:如何修复以及谷歌什么?
恕我直言,您不需要删除已经创建的实例,而只是不要创建它。创建由
__new__之前触发的方法控制,__init__并采用与它相同的参数。该方法__new__必须创建并返回该类的新实例。因此,您可以尝试覆盖此方法,以便在某些情况下它不会创建任何内容。