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!