2017-01-26 6 views
2

私はpython 2.7を使用しています。セッターなしでゲッターを使う方法

私は以下のクラスを持っている:

class Test: 

    def __init__(self): 
     self._pos_a = ['test_1'] 
     self._pos_b = ['test_2'] 


    @property 
    def pos_a(self): 
     return self._pos_a 

    @property 
    def pos_b(self): 
     return self._pos_b 


    if __name__ == "__main__": 
     x = Test() 
     x.pos_a = True 
     print x.pos_a 

>>> True 

私の理解では、プロパティのデコレータを使用することによって、私は基本的に私の2つのクラスatributesのそれぞれについて、getterメソッドを確立していますということです。私はセッターメソッドを作成していないので、x.pos_aに "True"を代入するとエラーが発生することが予想されます。エラーは、getterメソッドがあるがsetterメソッドがない属性の値を設定できないことです。代わりに、値は "True"に設定され、問題なく印刷されます。どのように私はその結果を達成するためにこれを実装するのですか?ユーザーがこれらの値を「取得」できるようにしたいが、設定することはできないはずです。

答えて

3

プロパティが正しく機能するには、objectから継承する必要があります。プロパティは記述子とだけnew-style classesサポート記述子を用いて実装されているためです

class Test(object): 
    ... 

関連する問題