2017-04-25 8 views
1

オブジェクトのインスタンス化に適切な値がない場合は、Falseを返す必要があります。私が知る限り、これはのinitメソッドではできません。私は値をチェックするために使用することができます別のメソッドが返されますブール値ですか?クラスオブジェクトの初期化でPythonの望ましくない値がある場合はFalseを返します

class Test: 
    def __init__(self,x,y,z): 
     if x == 0 and y == 0 and z == 0: 
      return False 
     self.x = x 
     self.y = y 
     self.z = z 

print(Test(0, 0, 0)) #should return False 
+0

なぜあなたは例外を投げていませんか? – user2357112

答えて

2

Test(0,0,0)コンストラクタの呼び出しで、常にTestクラスのインスタンスを返します。 __init__から値を返そうとすると、TypeErrorになります。

本当にここにほしいものはFactory Patternです。 TestFactoryは、特殊なケースでは "無効な"オブジェクトのほうが妥当な値であるNoneを返すテストを作成するための静的メソッドを提供します。

class Test: 
    def __init__(self,x,y,z): 
     self.x = x 
     self.y = y 
     self.z = z 

class TestFactory: 
    @staticmethod 
    def create_test(x,y,z): 
     if x == 0 and y == 0 and z == 0: 
      return None 
     else: 
      return Test(x,y,z) 

print(TestFactory.create_test(0,0,0)) 
関連する問題