プロパティが変更されるたびにデータを検証するクラスがあります。私はセッターが参照できるクラス変数として有効なオプションを保存したいと思いますが、私は@var.setter
のオプションの中に見つかりました。私ははすべてのクラス変数を参照することができません。@ var.setter関数がクラス変数にアクセスできないのはなぜですか?
なぜですか?
コード例:
class Standard():
def __init__(self):
self.variable1 = 1
self.variable2 = 2
@property
def variable1(self):
# This works
print(self.variable2)
return self.__variable1
@variable1.setter
def variable1(self, var):
# This doesn't work
print(self.variable2)
self.__variable1 = var
x = Standard()
print(x.variable1)
x.variable1 = 4
print(x.variable1)
この出力:
AttributeError: 'Standard' object has no attribute 'variable2'
それははっきりしません。あなたは__init__
でvariable1
を設定最初ある
'self.variable2'はまだeになりませんあなたが 'self.variable1'に割り当てるときにxist。 – vaultah
意図的に '__init__'に' self.variable1'を設定していますか?あるいは 'self .__ variable1'を意味しますか? –