[PYTHON] Wie soll ich auf Klassenvariablen zugreifen?

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

Wie soll ich auf Klassenvariablen zugreifen?
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Wie viel sollte ich schließlich einen Qiita-Artikel schreiben?
[Django] Ich habe versucht, Zugriffsbeschränkungen durch Klassenvererbung zu implementieren.
Python: Klassen- und Instanzvariablen
Globalisierung von Klasseninstanzvariablen
Python-Klassen- und Instanzvariablen
So definieren Sie Go-Variablen
Ich war süchtig nach falschen Klassenvariablen und Instanzvariablen in Python