Aufruf der statischen Methode in Python
Habe ich eine Klasse Person
und eine statische Methode in dieser Klasse genannt call_person
:
class Person:
def call_person():
print "hello person"
In der python-Konsole, die ich importieren Sie die Klasse Person, und rufen Sie Person.call_person()
. Aber es gibt mir eine Fehlermeldung, die sagt 'module' object has no attribute 'call_person'
. Kann jemand bitte lassen Sie mich wissen, warum ich immer diese Fehlermeldung?
InformationsquelleAutor der Frage Sadiksha Gautam | 2012-08-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie etwas tun, wie:
Je nachdem, was Sie tun möchten, eine classmethod besser geeignet sein könnten:
Hier der Unterschied ist, dass im zweiten Beispiel die Klasse selbst übergeben wird als erstes argument an die Methode (im Gegensatz zum normalen Verfahren, bei dem die Instanz das erste argument, oder staticmethod, die nicht erhalten haben, keine zusätzliche Argumente).
Nun zur Beantwortung Ihrer eigentlichen Frage. Ich Wette, dass Sie nicht das finden Ihrer Methode, weil Sie die Klasse
Person
in ein ModulPerson.py
.Dann:
Alternativ möchten Sie vielleicht, um importieren Sie die Klasse Person aus dem Modul Person:
Diese wird alles ein wenig verwirrend, denn was ist ein Modul und was eine Klasse ist. In der Regel ich versuche zu vermeiden, dass Klassen den gleichen Namen wie das Modul, das Sie Leben in. Dies ist jedoch offenbar nicht sah hinunter auf zu viel als
datetime
- Modul in der standard-Bibliothek enthält einedatetime
Klasse.Schließlich ist es erwähnenswert, dass Sie nicht müssen eine Klasse für dieses einfache Beispiel:
Nun in einer anderen Datei importieren:
InformationsquelleAutor der Antwort mgilson
Jeder hat schon erläutert, warum dies nicht eine statische Methode, aber ich werde erklären, warum Sie nicht, es zu finden. Sie sind auf der Suche für die Methode im Modul und nicht in der Klasse so etwas wie dieses finden würde, es richtig zu stellen.
Auch als @DanielRoseman hat gesagt, Sie könnte mir vorstellen, dass die Module enthalten eine Klasse mit dem gleichen Namen wie Java, obwohl dies nicht der Fall in Python.
InformationsquelleAutor der Antwort jamylak
Dass nicht eine statische Methode; Versuch
Sehen hier für mehr info.
InformationsquelleAutor der Antwort Ernest Friedman-Hill
In python 3.x, können Sie deklarieren eine statische Methode wie folgt:
aber die Methode mit dem ersten parameter, wie selbst behandelt werden als Methode einer Klasse
def call_person(self):
print "Hallo Mensch"
aber in python 2.x verwenden, müssen Sie ein '@staticmethod", bevor die statische Methode
können Sie auch erklären, statische Methode als diese
InformationsquelleAutor der Antwort shijq73
Müssen Sie der Dekorateur classmethod.
InformationsquelleAutor der Antwort Pran