Ich habe eine Klasse mit Variablen (int
, string
und list
). Und ich möchte @property verwenden, um den Wert von Variablen zu erhalten, um Werte für diese Variablen festzulegen. Ich könnte dieses Konzept für int
und string
Variablen implementieren, aber nicht für list
. Bitte helfen Sie mir, es auch für die Liste zu implementieren.Python-Eigenschaft und Setter für Liste wie int und Strings
class MyClass:
def __init__(self):
self._a = 1
self._b = 'hello'
self._c = [1, 2, 3]
@property
def a(self):
print(self._a)
@a.setter
def a(self, a):
self._a = a
@property
def b(self):
print(self._b)
@b.setter
def b(self, b):
self._b = b
my = MyClass()
my.a
# Output: 1
my.a = 2
my.a
# Output: 2
my.b
# Output: hello
my.b = 'world'
my.b
# Output: world
# Need to implement:
my.c
# Output: [1, 2, 3]
my.c = [4, 5, 6]
my.c
# Output: [4, 5, 6]
my.c[0] = 0
my.c
# Output: [0, 5, 6]
my.c[0]
# Output: 0
Ich habe ähnliche Fragen gefunden, aber sie für mich nicht passen, weil auf diese Weise Operationen zur Liste Aufruf von int und String unterscheiden würde:
Können Sie diese Verschlankung auf einen [Minimal, vollständig und prüfbare] (http://stackoverflow.com/ help/mcve) Beispiel. Das erleichtert es uns, Ihnen zu helfen. –
@ stephen-rauch Danke. Ich habe den Code versehentlich zweimal aus meinem Notizblock kopiert. Ich habe ein Duplikat meines Codes gelöscht. –
Warum drucken Ihre Eigenschaften * den Wert, anstatt ihn zurückzugeben? Und warum hast du sogar Immobilien? Wenn Leute sagen, dass Sie in Python keine Getter und Setter brauchen, weil Python Eigenschaften hat, bedeutet das nicht, dass Sie Eigenschaften überall verwenden sollten; es bedeutet, dass Sie reguläre Attribute verwenden sollten, und wenn es sich herausstellt, dass Sie etwas Logik zum Abrufen oder Festlegen des Attributs hinzufügen müssen, * dann * bringen Sie eine 'Eigenschaft' mit. – user2357112