Python hat Funktionen. Da alles ein Objekt ist Funktionen sind auch Objekte .
Also, um Ihr Beispiel zu verwenden:
%Vor% Wenn wir def
verwenden, haben wir ein Objekt erstellt, das eine Funktion ist. Wir können zum Beispiel ein Attribut des Objekts betrachten:
Als Antwort auf Ihre Frage - whatever()
ist nicht eine Methode von file.py
. Es ist besser, es als ein Funktionsobjekt zu betrachten, das an den Namen whatever
im globalen Namespace von file.py
gebunden ist.
Oder um es anders zu betrachten, es hindert uns nichts daran, den Namen whatever
an ein anderes Objekt zu binden:
Es gibt andere Möglichkeiten, Funktionsobjekte zu erstellen. Zum Beispiel lambdas :
%Vor% Eine Methode ist wie ein Attribut eines Objekts, das eine Funktion ist. Was es zu einer Methode macht, ist, dass die Methoden an das Objekt gebunden werden. Dadurch wird das Objekt als erstes Argument an die Funktion übergeben, die wir normalerweise self
nennen.
Definieren wir eine Klasse SomeClass
mit einer Methode somemethod
und einer Instanz someobject
:
Sehen wir uns somemethod
als Attribut an:
Wir können sehen, dass es eine gebundene Methode für das Objekt und eine ungebundene Methode für die Klasse ist. Lassen Sie uns nun die Methode aufrufen und sehen, was passiert:
%Vor% Da es sich um eine gebundene Methode handelt, ist das erste von somemethod
empfangene Argument das Objekt und das zweite Argument das erste Argument im Methodenaufruf. Lassen Sie uns die Methode für die Klasse aufrufen:
Python beschwert sich, weil wir versuchen, die Methode aufzurufen, ohne ihr ein Objekt des passenden Typs zu geben. Wir können das beheben, indem wir das Objekt "von Hand" übergeben:
%Vor%Sie können Methodenaufrufe dieses Typs - Aufruf einer Methode für eine Klasse - verwenden, wenn Sie eine bestimmte Methode von einer übergeordneten Klasse aufrufen möchten.
(Es ist möglich eine Funktion zu verwenden und an die Klasse zu binden, um sie zu einer Methode
Anders als in Java in Python enthält eine Datei mit dem Namen file.py
nicht notwendigerweise eine Klasse namens file
, wie Sie vielleicht erwarten würden, wenn es sich um eine Java-Datei namens file.java
handeln würde.
In Python ist eine Datei ein Modul, das eigentlich nur ein Namespace (eher vergleichbar mit einem Java-Paket als eine Java-Klasse) und keine Klasse ist. Betrachten Sie das Beispiel file.py
unten:
Im obigen Beispiel enthält der file
Modul / Namespace eine gewöhnliche Funktion namens whatever_func
und eine Klasse SomeClass
mit einer Methode whatever_meth
.
Tags und Links python computer-science