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
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)
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)
Résultat de sortie
apple: <__main__.Apple object at 0x7fa3a9202ed0>,2
Regardez la relation de liaison :
print (a.get_apple) <bound method Apple.get_apple of <__main__.Apple object at 0x7fa3a9202ed0>>
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)
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 '__main__.Apple'>,3 apple: <class '__main__.Apple'>,3
Regardez la relation de liaison :
print (a.get_class_apple) print (Apple.get_class_apple)
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 '__main__.Apple'>> <bound method type.get_class_apple of <class '__main__.Apple'>>
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!