Ich habe eine Klasse, in der ich die Daten validieren möchte, wenn die Eigenschaft geändert wird. Ich möchte die gültigen Optionen als eine Klassenvariable speichern, auf die der Setter verweisen kann, aber ich habe festgestellt, dass innerhalb der @var.setter
Option Ich bin nicht in der Lage, Klassenvariablen überhaupt zu referenzieren.Warum kann @ var.setter nicht auf Zugriffsklassenvariablen zugreifen?
Warum ist das?
Code-Beispiel:
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)
Diese Ausgänge:
AttributeError: 'Standard' object has no attribute 'variable2'
Wenn es eindeutig der Fall ist.
'self.variable2' ist noch nicht e xist, wenn Sie 'self.variable1' zuweisen. – vaultah
Haben Sie "self.variable1" absichtlich in "__init__' gesetzt? Oder meinst du "self .__ variable1"? –