Detaillierte Erläuterung von Beispielen für statische und Klassenmitglieder (Python)

Y2J
Freigeben: 2017-05-06 14:30:06
Original
1448 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich die relevanten Informationen zu statischen Methoden und Klassenmitgliedern in Python vorgestellt. Der Artikel fasst die Unterschiede in der Syntax und Verwendung zwischen den beiden anhand von Beispielcode zusammen.

Vorwort

Da sich die Python-Ebene derzeit im nutzbaren Stadium befindet, ist auch die in täglichen Skripten verwendete Schreibmethode von Python relativ einfach . , ich habe noch nie ein etwas größeres Projekt geschrieben. Es besteht immer noch ein Mangel an Verständnis für Klassen in Python, die organisatorischen Beziehungen zwischen Klassen und wie Klassen im gesamten Projekt gekoppelt sind. Ich habe vor, von anderen geschriebenen Python-Code zu lesen, um die Anwendung von Python im Ingenieurwesen zu erlernen und mein technisches Niveau zu verbessern. Der ausgewählte Python-Code ist der Python-Crawler-Code, die Github-Adresse. Dieser Code entspricht gerade dem Codeniveau, das außerhalb meiner Komfortzone liegt, und ist daher für mein aktuelles Lernniveau sehr gut geeignet.

Nach Python 2.4 werden Dekoratoren hauptsächlich zur Implementierung statischer Methoden und Klassenmethoden verwendet.

Der Dekorateur verwendet den @Operator Das Beispiel lautet wie folgt:

class Example:
 val1 = "Value 1"
 def init(self):
 self.val2 = "Value 2"

 @staticmethod
 def staticmd():
 print("静态方法,无法访问Value1和Value2")

 @classmethod
 def classmd(cls):
 print('类方法,类:'+str(cls)+",val1:"+cls.val1+",无法访问val2的值")


example = Example()
example.staticmd() #实例调用静态方法,无法访问实例变量val1和val2
example.classmd() #实例调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
example.val1 = "The instance value1 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:Value 1,无法访问val2的值
Example.val1 = "The class value2 changed"
example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:The class value2 changed,无法访问val2的值
Example.classmd() #类调用类方法,输出结果:类方法,类:<class &#39;main.Example&#39;>,val1:The class value2 changed,无法访问val2的值
Nach dem Login kopieren

Believe Aus dem obigen Beispiel können Sie den Unterschied zwischen statischen Methoden und Klassenmethoden deutlich erkennen.

Der erste ist der Unterschied in der Syntax:

  • Statische Methoden müssen den Selbstparameter class nicht übergebenMember-MethodenSie müssen den cls-Parameter übergeben, der diese Klasse darstellt.

  • Statische Methoden können auf Instanzvariablen zugreifen, während Klassenvariablen nicht auf Instanzvariablen zugreifen können Klassenvariablen

Der Unterschied in der Verwendung:

Da statische Methoden nicht auf Klassenattribute und Instanzattribute zugreifen können entsprechen einer relativen unabhängigen Methode und haben nichts mit Klassen zu tun. Auf diese Weise sind statische Methoden lediglich Funktionen im Geltungsbereich der Klasse.

[Verwandte Empfehlungen]

1.

Python kostenloses Video-Tutorial

2.

Python-Lernhandbuch

3.

Python objektorientiertes Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für statische und Klassenmitglieder (Python). 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!