Heim > Backend-Entwicklung > Python-Tutorial > Der Unterschied zwischen Python-Klassenmethoden und statischen Methoden

Der Unterschied zwischen Python-Klassenmethoden und statischen Methoden

爱喝马黛茶的安东尼
Freigeben: 2019-06-24 10:18:33
Original
3223 Leute haben es durchsucht

Python unterstützt die Definition von Klassenmethoden vollständig und unterstützt sogar die Definition statischer Methoden. Die Klassenmethoden von Python sind den statischen Methoden sehr ähnlich. Es wird empfohlen, sie mithilfe von Klassen aufzurufen (tatsächlich können sie auch mithilfe von Objekten aufgerufen werden).

Der Unterschied zwischen Python-Klassenmethoden und statischen MethodenDer Unterschied zwischen Klassenmethoden und statischen Methoden

Python bindet automatisch den ersten Parameter der Klassenmethode, den ersten Parameter der Klassenmethode (normalerweise). Es wird empfohlen, den Parameter mit dem Namen cls) automatisch an die Klasse selbst zu binden. Bei statischen Methoden erfolgt die Bindung jedoch nicht automatisch.
Eine mit @classmethod geänderte Methode ist eine Klassenmethode; eine mit @staticmethod geänderte Methode ist eine statische Methode.

Verwandte Empfehlungen: „Python-Video-Tutorial
Der folgende Code demonstriert die Definition von Klassenmethoden und statischen Methoden:

class Bird:
    # classmethod修饰的方法是类方法
    @classmethod
    def fly (cls):
        print('类方法fly: ', cls)
    # staticmethod修饰的方法是静态方法
    @staticmethod
    def info (p):
        print('静态方法info: ', p)
# 调用类方法,Bird类会自动绑定到第一个参数
Bird.fly()  #①
# 调用静态方法,不会自动绑定,因此程序必须手动绑定第一个参数
Bird.info('crazyit')
# 创建Bird对象
b = Bird()
# 使用对象调用fly()类方法,其实依然还是使用类调用,
# 因此第一个参数依然被自动绑定到Bird类
b.fly()  #②
# 使用对象调用info()静态方法,其实依然还是使用类调用,
# 因此程序必须为第一个参数执行绑定
b.info('fkit')
Nach dem Login kopieren

Wie aus dem oben fett gedruckten Code ersichtlich ist, handelt es sich bei der mit @classmethod geänderten Methode um eine Klassenmethode. Diese Klassenmethode definiert einen CLS-Parameter, der automatisch an die Bird-Klasse selbst gebunden wird, unabhängig davon, ob das Programm eine Klasse verwendet oder nicht Ein Objekt zum Aufrufen der Methode. Python bindet immer den ersten Parameter der Klassenmethode an die Klasse selbst, z. B. den Ausführungseffekt der Codes ① und ②.
Das obige Programm verwendet auch @staticmethod, um eine statische Methode zu definieren. Das Programm kann auch Klassen zum Aufrufen statischer Methoden oder Objekte zum Aufrufen statischer Methoden verwenden. Unabhängig davon, welche Methode verwendet wird, führt Python keine automatische Bindung für statische Methoden durch . Sicherlich.
Beim Programmieren in Python besteht im Allgemeinen keine Notwendigkeit, Klassenmethoden oder statische Methoden zu verwenden. Das Programm kann Funktionen anstelle von Klassenmethoden oder statischen Methoden verwenden. Aber in speziellen Szenarien (z. B. bei Verwendung des Factory-Musters) sind auch Klassenmethoden oder statische Methoden eine gute Wahl.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Python-Klassenmethoden und statischen Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage