如果参数与期望值不匹配,我想避免创建实例。
I.e.总之:如何*不*创建实例
#!/usr/bin/env python3
class Test(object):
def __init__(self, reallydoit = True):
if reallydoit:
self.done = True
else:
return None
make_me = Test()
make_me_not = Test(reallydoit=False)
我想make_me_not
为None
,我认为return None
能做到这一点,但这个变量是Test
实例太:
>>> make_me
<__main__.Test object at 0x7fd78c732390>
>>> make_me_not
<__main__.Test object at 0x7fd78c732470>
我敢肯定有做到这一点的一种方式,但我的Google-fu到目前为止失败了。
谢谢你的帮助。
编辑:我宁愿这个被默默地处理;条件应该被解释为“最好不创建这个特定的实例”而不是“你正在使用这个类错误的方式”。所以是的,提出一个错误,然后处理它是一种可能性,但我宁愿减少噪音。
You co uld尝试提出错误 – lordingtar
引发异常,或者覆盖'__new__'而不是'__init__'。 – kindall
在构造函数中抛出异常。这是处理错误构造函数参数的标准方法。 – Carcigenicate