python中静态方法和类方法,python中实例方法类方法和静态方法的区别
静态方法和类方法Python类包含三种方法:实例方法、静态方法和类方法。其中,示例方法在前面的章节中已经多次使用。若要调用实例方法,必须先实例化该类,然后才能调用它。也就是说,调用实例化方法需要该类的一个实例(对象)。但是,静态方法根本不需要类的实例(静态方法不需要self参数),这和其他编程语言完全一样。
类方法的调用方式与静态方法完全相同。不同的是,类方法的定义方式和实例方法一样,都需要一个self参数,只是这个self参数的含义不同。对于实例方法,这个self参数表示当前类的实例,可以通过self访问对象中的方法和属性。class方法的self参数表示类的元数据,即类本身。不能通过self参数访问对象中的方法和属性,只能通过这个self参数访问类的静态方法和属性。
您需要使用@staticmethod decorator来定义静态方法,使用@classmethod decorator来定义类方法。
我的类:# instance method def instance method(self):pass # static method @ static method def static method():pass # class method def class method(self):pass【例10.9】这个例子演示了如何定义实例方法、静态方法和类方法,以及如何调用这些方法。
Class Myclass: #定义一个可以被静态方法和类方法访问的静态变量name= bill def _ _ init _ _(self):print(调用Myclass的构造函数)#定义实例变量,静态方法和MyClass方法不能访问这个变量self.value=20 #定义静态方法@staticmethod def run(): #访问静态变量名称print(* ,Myclass.name, *)print( my class的静态方法run被调用)# Define class method @ class method #这里self是类的元数据,而不是类的实例def do(self): print(self) #访问静态变量名称print([,self.name,]) print(调用静态方法run) self.run() #实例变量不能在类方法中被访问,否则会抛出异常(因为实例变量需要被类的实例访问)print(self.value) print(成员方法do被调用)#在值)打印( ),自身。name,)print(self)#调用静态方法runMyclass.run()#创建Myclass的实例c=Myclass()#也可以调用类方法c.do()#访问静态变量print (myclass2.name ,=,myclass.name) #通过类调用类方法myclass.name。
* bill *调用Myclass的静态方法run,调用我的类的构造函数,调用class __main__。Myclass[ Bill]调用静态方法run* Bill * Myclass的静态方法run调用成员方法do调用my class 2 . name=Bill class _ _ main _ _。myclass [bill]调用静态方法run* Bill *Myclass的静态方法run调用成员方法do调用20bill _ _ main _。myclass object at0x10d5bcd30从实例方法、静态方法和类方法的调用规则可以得出以下结论:
由实例定义的变量只能由实例方法访问,而直接在类中定义的静态变量(如本例中的name变量)可以由实例方法、静态方法和类方法访问。方法不能被静态方法和类方法访问,但是静态方法和类方法可以被实例方法访问。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。