引数が期待値と一致しない場合、インスタンスの作成を避けたいと思います。
I.要するに:インスタンスを作成しない方法*
#!/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
例外を発生させるか、 '__init__'の代わりに' __new__'を上書きしてください。 – kindall
コンストラクタで例外をスローします。これは、不正なコンストラクタ引数を処理する標準的な方法です。 – Carcigenicate