Python实例方法、类方法、静态方法区别详解
1、关于参数的区别
实例方法:定义实例方法是最少有一个形参--->实例对象,通常用self
类方法:定义类方法的时候最少有一个形参--->类对象,通常用cls
静态方法:定义静态方法的时候可以不定义形参
2、关于方法定义时候添加装饰器的区别
实例方法:不需要添加装饰器
类方法:需要添加装饰器---->@classmethod
静态方法:需要添加装饰器--->@staticmethod
3、调用:
1.实例方法可以通过对象直接调用
2.但是用类名调用的时候,需要创建一个对象,并且在传递参数的时候要将对象传递进去
3.类方法可以通过类名直接调用,也可以通过对象来调用
4.静态方法可以通过类名直接调用,也可以通过对象来调用
4、补充
1.静态方法不可以继承
2.类方法不能访问实例变量,只能访问类变量
classDog(): age=3#类变量 def__init__(self): self.name="XiaoBai"#实例变量 defrun(self):#实例方法 print("{}yearsold's{}isrunning!".format(self.age,self.name)) @classmethod defeat(cls): #print(cls.name)#类方法,不能访问实例变量(属性) print("XiaoHeiis{}yearsold".format(cls.age))#类方法只能访问类变量 @staticmethod defsleep(name): #静态方法与类无关,只能类中的一个功能而已 #静态方法不能访问类变量和实例变量 print("{}issleeping".format(name)) d=Dog() d.run()#通过实例化对象调用实例方法 Dog.run(d)#通过类名称调用实例方法,需要在方法中传入实例对象 d.eat()#通过实例化对象调用类方法 Dog.eat()#通过类名称调用类方法 d.sleep("XiaoLan")#通过实例化对象调用静态方法 Dog.sleep("XiaoLan")#通过类名称调用静态方法
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。