Cet article présente principalement la différence entre la méthode statique et la méthode de classe en python. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent se référer à des
exemples
class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,x) @classmethod def class_foo(cls,x): print "executing class_foo(%s,%s)"%(cls,x) @staticmethod def static_foo(x): print "executing static_foo(%s)"%x a=A()
a.foo(1) # executing foo(<__main__.A object at 0xb7dbef0c>,1) ----------------------------------------------------------------- a.class_foo(1) # executing class_foo(<class '__main__.A'>,1) A.class_foo(1) # executing class_foo(<class '__main__.A'>,1) ----------------------------------------------------------------- a.static_foo(1) # executing static_foo(1) A.static_foo('hi') # executing static_foo(hi)
Différence
• L'appelant de foo() doit être une instance de classe A, class_foo() et static_foo( L'appelant de ) peut être soit une classe, soit une instance • Les paramètres sont différents, le paramètre foo() est self et d'autres paramètres, le paramètre class_foo() utilise la classe (cls) pour remplacer self, static_foo() Ensuite, il n'y a que des paramètres, pas de self et class (cls)• foo() dans a.foo(1) est lié à a, class_foo() est lié à la classe, et static_foo() Il n'est lié à aucun d'eux et peut être visualisé en utilisant print, comme suit :" print(a.foo) # <bound method A.foo of <main.A object at 0xb7d52f0c>> print(a.class_foo) # <bound method type.class_foo of <class 'main.A'>> print A.class_foo <bound method classobj.class_foo of > print(a.static_foo) # print(A.static_foo) # "
Fonction
• Scénarios d'utilisation : la méthode de classe est souvent utilisée dans certaines classes d'usine, ce qui signifie qu'elle est utilisée lors de l'héritage en POO. En général, la méthode statique peut être remplacée par une fonction externe, mais cette dernière ne le peut pas. être hérité. Changement, très similaire aux méthodes statiques en C++/JAVA• Il est avantageux d'organiser le code et de nettoyer l'espace de nomsCe 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!