Verwenden Sie class.variable name
, um von einer Instanzmethode aus auf eine Klassenvariable zuzugreifen.
python
In [1]: class A(object):
...: TEST = "test"
...: def test(self):
...: print(A.TEST)
...:
In [2]: a = A()
In [3]: a.test()
test
Tatsächlich ist es möglich, über self (erstes Argument der Instanzmethode )
auf Klassenvariablen zuzugreifen.
python
In [4]: class A(object):
TEST = "test"
def test(self):
#Es kann auch über sich selbst zugegriffen werden.
print(self.TEST)
...:
In [5]: a = A()
In [6]: a.test()
test
Beim Zugriff mit "self" gibt es kein Problem, wenn die Klassenvariable unveränderlich ist (schreibgeschützt). (Hinweis: Python verfügt in Java nicht über eine Funktion, die final entspricht, daher ist es eine Gentleman-Vereinbarung, damit umzugehen, ohne sie neu zu schreiben.) Wenn Sie jedoch die Klassenvariablenvariable erstellen möchten, ist es möglich, dass "Ich wollte die Klassenvariable neu schreiben, aber die Instanzvariable mit demselben Namen definieren", wenn ich nicht vorsichtig war.
python
# A.A statt TEST.Ich habe es TEST zugewiesen.
In [7]: a.TEST = "instancetest"
#Klassenvariable(A.TEST)Keine Instanzvariablen(a.TEST)Wird referenziert.
In [8]: a.test()
instancetest
Ich bin der Meinung, dass "class.variable name" gut für den sicheren Zugriff auf Klassenvariablen geeignet ist, aber anfällig für das Ändern von Klassennamen. Ist es richtig, sich auf Refactoring-Tools zu verlassen?
Recommended Posts