Für Python-Versionen 3.10 und höher ist der Aufruf einer statischen Methode innerhalb des Klassenkörpers unkompliziert. Für Versionen 3.9 und früher stellt dies jedoch eine Herausforderung dar.
Beim Versuch, eine statische Methode aus dem Klassenkörper heraus aufzurufen, kann der folgende Fehler auftreten:
TypeError: 'staticmethod' object is not callable
Dieser Fehler tritt auf, weil statische Methoden, wenn sie mit dem Staticmethod-Dekorator deklariert werden, zu Deskriptoren werden. Deskriptoren werden an die Klasse und nicht an die Instanz gebunden, wodurch sie aus dem Klassenkörper heraus nicht zugänglich sind.
Eine Problemumgehung besteht darin, über das __func__-Attribut des auf die ursprüngliche Rohfunktion zuzugreifen statisches Methodenobjekt:
<code class="python">class Klass(object): @staticmethod def stat_func(): return 42 _ANS = stat_func.__func__() # call the staticmethod def method(self): ret = Klass.stat_func() return ret</code>
<code class="python">class Klass(object): @staticmethod def stat_func(): return 42 def method(self): ret = Klass.stat_func() return ret</code>
Das obige ist der detaillierte Inhalt vonWie rufe ich statische Klassenmethoden aus dem Klassenkörper in Python auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!