2012-04-16 9 views
0

私は素晴らしい構造化クラスを作成するためにPythonでオブジェクト指向を使用しようとしています。 1つのクラスのすべての関数が継承するオブジェクトがありますが、1つまたは2つの追加パラメータが必要なサブ関数(ゲッターとセッター)があります。Pythonプロパティ、これを正しく動作させるにはどうすればいいですか

このタイプのロジックを正しく動作させるにはどうすればよいですか。

class XYZ(object): 
    def __init__(self, cameraId): 
     self.cameraId = cameraId; 
     self.index = ""; 

    def get_test(self): 
     print "Index: " + self.index + " CameraID: " + self.cameraId; 
     return self.cameraId; 

    def set_test(self, value, myValue=""): 
     self.cameraId = value; 
     self.index = myValue; 
     return True; 

    TEST_XYZ = property(get_test,set_test); 
+3

これはプロパティではありません。 set_testは関数で、単純で単純な関数なので、それを関数として使用してみませんか?オプションの要素を持つプロパティは混乱します。 –

+0

多分あなたの話は何ですか** kwargsですか? – Joucks

答えて

2

tupleの値を使用できます。文の後に;を使用する必要はありません。

class XYZ(object): 
    def __init__(self, cameraId): 
     self.cameraId = cameraId 
     self.index = "" 

    def get_test(self): 
     print "Index: " + self.index + " CameraID: " + self.cameraId 
     return self.cameraId 

    def set_test(self, value): 
     # Require value to be a tuple! 
     assert(isinstance(value, tuple)) 

     self.cameraId = value[0] 

     try: 
      self.index = value[1] 

     except IndexError: 
      self.index = "" 

     return True 

    TEST_XYZ = property(get_test, set_test) 
+0

私は使用しないことを知っています。私はいくつかの言語のプログラマーであり、私は今なぜPythonがそのようなものとして使われた数少ないアイディアの1つであると考えているのか分からない。 – TheMonkeyMan

+10

@Deano:自分の好意を持ち、セミコロンを残してください。言語を正しく使用しない場合は、なぜそれを使うのですか? –

関連する問題