我想建立一個類,它會在創建實例時根據傳遞給類的參數的值來中止。我已經嘗試了幾件事,其中之一是在__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