Ich bin eine Person, die Code in Python schreibt
Da ich jedoch noch Anfänger bin, langweilen mich Fehler oft. Unter ihnen schreibe ich diesmal mit der Absicht, die Setter und Getter der Klasse, die ich bisher unklar gelassen habe, neu zu lernen. Lass uns gehen!
python 3.7.4
Es gibt Zeiten, in denen Sie das erhalten möchten, was die Klasse generiert hat. Was würden Sie in einem solchen Fall tun?
practice01.py
class C(object):
def __init__(self) -> None:
self.x = 1
c = C()
r = c.x
print(r)
# 1
Es ist einfach zu schreiben. Aber wenn Sie @property oder so etwas verwenden möchten
practice02.py
class C(object):
def __init__(self) -> None:
self.x = 1
@property
def x(self):
if self.x is None:
return None
return self.x
c = C()
r = c.x
print(r)
# AttributeError: can't set attribute
Ja, ich habe einen AttributeError: Attribut kann nicht gesetzt werden
.
Daher möchte ich zunächst eine Lösung vorstellen.
practice03.py
class C(object):
def __init__(self) -> None:
self._x = 1
@property
def x(self):
if self._x is None:
return None
return self._x
c = C()
r = c.x
print(r)
# 1
Warum funktioniert "Practice02.py" nicht?
Dies liegt daran, dass der Variablenname und der Funktionsname übereinstimmen. Mit anderen Worten, wenn Sie die Variable als self._x
wie Practice03.py
angeben, ist dies sicher, da __ der Variablenname und der Funktionsname unterschiedlich sind __.
Und in der Praxis03.py
getter.py
@property
def x(self):
if self._x is None:
return None
return self._x
Dieser Teil heißt Getter!
Bei einem einfachen Artikel wie diesem ist es meiner Meinung nach einfacher zu verstehen, wenn Sie ihn schreiben, ohne einen Getter oder Setter zu verwenden. Ich denke, es wird tatsächlich verwendet, wenn Sie eine Methode, die in der __-Klasse vorhanden ist, wie ein Attribut __ behandeln möchten.
Es gibt einen sehr hilfreichen Artikel, daher werde ich darauf verweisen.
Ich verstehe die Notwendigkeit der python3-Eigenschaft nicht.
Wie Sie diesem Artikel entnehmen können, sind Getter und Setter wahrscheinlich eine der Techniken, die verwendet werden, um das Verständnis zu erleichtern. ~~ Mit anderen Worten, es ist eine Stimmung. ~~ Wenn Sie es gut verwenden können, können Sie saubereren und leichter verständlichen Code schreiben! !! Ich werde mein Bestes geben, um zu lernen, damit ich es gut gebrauchen kann!
Jemand hat im Kommentarbereich etwas leicht verständliches geschrieben, also schauen Sie bitte auch dort nach!
Dann!
Recommended Posts