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

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

藏色散人
Libérer: 2019-07-03 09:45:03
original
3870 Les gens l'ont consulté

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

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

Ce qui suit utilise des exemples pour illustrer les différences.

Définissez d'abord une classe, comprenant 2 méthodes :

class Apple(object):
        def get_apple(self, n):
                print "apple: %s,%s" % (self,n)
        @classmethod
        def get_class_apple(cls, n):
                print "apple: %s,%s" % (cls,n)
Copier après la connexion

Méthode commune de la classe

Méthode commune de la classe, qui doit être appelé par une instance de la classe .

a = Apple()
a.get_apple(2)
Copier après la connexion

Résultat de sortie

apple: <__main__.Apple object at 0x7fa3a9202ed0>,2
Copier après la connexion

Regardez la relation de liaison :

print (a.get_apple)
<bound method Apple.get_apple of <__main__.Apple object at 0x7fa3a9202ed0>>
Copier après la connexion

Les méthodes ordinaires de la classe ne peuvent être utilisées qu'avec des instances de la classe. Si vous utilisez une classe pour appeler une méthode normale, l'erreur suivante se produit :

Apple.get_apple(2)
Traceback (most recent call last): File "static.py", line 22, in <module> Apple.get_apple(2) TypeError: unbound method get_apple() must be called with Apple instance as first argument (got int instance instead)
Copier après la connexion

Méthode de classe

Méthode de classe, indiquant que la méthode est liée à la classe.

a.get_class_apple(3)
Apple.get_class_apple(3)
apple: <class &#39;__main__.Apple&#39;>,3
apple: <class &#39;__main__.Apple&#39;>,3
Copier après la connexion

Regardez la relation de liaison :

print (a.get_class_apple) print (Apple.get_class_apple)
Copier après la connexion

Le résultat de sortie est le même lors de l'utilisation d'une instance et de l'appel d'une classe.

<bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>> <bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>>
Copier après la connexion

Recommandations associées : "Tutoriel 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!

É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