Maison >développement back-end >Tutoriel Python >Explication détaillée d'exemples de membres statiques et de classe (python)

Explication détaillée d'exemples de membres statiques et de classe (python)

Y2J
Y2Joriginal
2017-05-06 14:30:061508parcourir

Cet article présente principalement les informations pertinentes sur les méthodes statiques et les membres de classe en Python. L'article résume les différences de syntaxe et d'utilisation entre les deux à travers un exemple de code. Les amis dans le besoin peuvent s'y référer ci-dessous.

Avant-propos

Étant donné que le niveau de Python est actuellement au stade utilisable, la méthode d'écriture de Python utilisée dans les scripts quotidiens est également relativement simple . , je n’ai jamais écrit un projet un peu plus grand. Il existe encore un manque de compréhension des classes en Python, des relations organisationnelles entre les classes et de la manière dont les classes sont couplées dans l'ensemble du projet. J'ai l'intention de lire du code Python écrit par d'autres pour apprendre l'application de Python en ingénierie et améliorer mon niveau technique. Le code Python sélectionné est le code du robot Python, adresse github. Ce code correspond juste au niveau de code qui sort de ma zone de confort, il est donc très adapté à mon niveau d'apprentissage actuel.

Après Python 2.4, les décorateurs sont principalement utilisés pour implémenter des méthodes statiques et des méthodes de classe.

Le décorateur utilise l'@opérateur L'exemple est le suivant :

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的值

Croire. à partir de ce qui précède Dans l'exemple, vous pouvez clairement distinguer la différence entre les méthodes statiques et les méthodes de classe.

Le premier est la différence de syntaxe :

  • Les méthodes statiques n'ont pas besoin de transmettre le paramètre self, classméthodes membresVous devez transmettre le paramètre cls représentant cette classe

  • Les méthodes statiques peuvent accéder aux variables d'instance et les méthodes membres de classe ne peuvent pas accéder aux variables d'instance mais peuvent y accéder. variables de classe

La différence d'utilisation :

Puisque les méthodes statiques ne peuvent pas accéder aux attributs de classe , aux attributs d'instance sont équivalents à un relatif. Les méthodes indépendantes n'ont rien à voir avec les classes. De cette façon, les méthodes statiques ne sont que des fonctions dans le cadre de la classe.

[Recommandations associées]

1. Tutoriel vidéo gratuit Python

2. Manuel d'apprentissage Python

3.

Tutoriel vidéo orienté objet Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn