我想建立一个类,它会在创建实例时根据传递给类的参数的值来中止。我已经尝试了几件事,其中之一是在__new__
方法引发错误:如何中止Python中的对象实例创建?
class a():
def __new__(cls, x):
if x == True:
return cls
else:
raise ValueError
这就是我希望会发生:
>>obj1 = a(True)
>>obj2 = a(False)
ValueError Traceback (most recent call last)
obj1
存在,但obj2
不。
任何想法?
不应该重写'__init __(self,...)'而不是? – 2010-10-05 21:12:11
@matt b。如果意图是停止创建对象,那么它就不是语义。它确实工作。 – aaronasterling 2010-10-05 21:28:29
@AaronMcSmooth:为什么在'__new__'中引发异常比在__init__中引发异常要好。结果对我来说看起来是一样的,'__init__'是所有其他初始化代码所在的地方。为什么不应该去那里呢? – Arlaharen 2010-10-05 22:04:35