Maison  >  Article  >  développement back-end  >  La différence entre les méthodes de classe Python et les méthodes statiques

La différence entre les méthodes de classe Python et les méthodes statiques

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-06-24 10:18:333176parcourir

Python prend entièrement en charge la définition de méthodes de classe et prend même en charge la définition de méthodes statiques. Les méthodes de classe de Python sont très similaires aux méthodes statiques. Il est recommandé de les appeler à l'aide de classes (en fait, elles peuvent également être appelées à l'aide d'objets).

La différence entre les méthodes de classe Python et les méthodes statiquesLa différence entre les méthodes de classe et les méthodes statiques

Python liera automatiquement le premier paramètre de la méthode de classe, le premier paramètre de la méthode de classe (généralement Il est recommandé que le paramètre nommé cls) soit automatiquement lié à la classe elle-même, mais pour les méthodes statiques, il ne le sera pas automatiquement.
Une méthode modifiée avec @classmethod est une méthode de classe ; une méthode modifiée avec @staticmethod est une méthode statique.

Recommandations associées : "Tutoriel vidéo Python"
Le code suivant illustre la définition des méthodes de classe et des méthodes statiques :

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')

Comme le montre le code en gras ci-dessus, la méthode modifiée avec @classmethod est une méthode de classe. Cette méthode de classe définit un paramètre cls, qui sera automatiquement lié à la classe Bird elle-même, que le programme utilise une classe ou. un objet pour appeler la méthode, Python liera toujours le premier paramètre de la méthode de classe à la classe elle-même, comme l'effet d'exécution du code n°1 et n°2.
Le programme ci-dessus utilise également @staticmethod pour définir une méthode statique. Le programme peut également utiliser des classes pour appeler des méthodes statiques ou des objets pour appeler des méthodes statiques, quelle que soit la méthode utilisée, Python n'effectuera pas de liaison automatique pour les méthodes statiques. . Certainement.
Lors de la programmation en Python, il n'est généralement pas nécessaire d'utiliser des méthodes de classe ou des méthodes statiques. Le programme peut utiliser des fonctions au lieu de méthodes de classe ou de méthodes statiques. Mais dans des scénarios particuliers (comme l’utilisation du modèle d’usine), les méthodes de classe ou les méthodes statiques sont également de bons choix.

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