Méthodes statiques et membres de classe en Python

高洛峰
Libérer: 2017-03-01 11:56:38
original
1486 Les gens l'ont consulté

Avant-propos

Étant donné que le niveau de Python est actuellement au stade utilisable, les scripts que j'écris habituellement en utilisant Python sont relativement simples et je n'ai jamais écrit de projet légèrement plus volumineux. 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的值
Copier après la connexion

Je pense que cela peut être facilement résolu. à partir de l'exemple ci-dessus, la différence entre les méthodes statiques et les méthodes de classe est clairement distinguée.

La première est la différence de syntaxe :

  • Les méthodes statiques n'ont pas besoin de transmettre le paramètre self, et les méthodes membres de la classe doivent transmettre le paramètre self. paramètre cls représentant cette classe ;

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

    Différence utilisée :

Étant donné que les méthodes statiques ne peuvent pas accéder aux attributs de classe, les attributs d'instance sont équivalents à une méthode relativement indépendante et n'ont rien à voir avec la classe. De cette façon, les méthodes statiques ne sont que des fonctions dans le cadre de la classe.

Pour plus d'articles liés aux méthodes statiques et aux membres de classe en Python, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!