人生总有很多巧合的事情,在我身上就发生了这样的一件,那就是最近三次的求职面试,我都被问到了一个相同的问题,那就是“什么是静态方法,实例方法和类方法,它们有什么区别?”现在回过头想想,第一次的回答还是很仓促的,可能也有点紧张,不过比较顺利的是,我还是讲出了80%的点,以至于没有让面试成为泡影。
那么今天呢,我就来聊一聊静态方法、实例方法和类方法。也希望能够帮助到有需要的人们。
语法层面剖析
静态方法
1、语法形态
staticmethod
def方法名称():
方法体
2、调用
类对象.方法名称
实例对象.方法名称
、特点
无参数,方法体中不能访问类或实例的任何属性和方
实例方法
1、语法形态
def方法名称(self,参数列表):
方法体
2、调用
实例对象.方法名称(参数列表)
、特点
self对象,即实例对象可以使用实例的属性和方法,也可以使用类的属性和方法,推荐使用实例的方法调用
类方法
1、语法形态
classmethod
def方法名称(cls,参数方法):
方法体
2、调用
类名.方法名(参数列表)
、特点
cls对象,即类对象可以使用类的属性和方法,但不能传实例的属性和方法
类方法、静态方法、实例方法的区别
类方法
classmethod装饰,隐式传参,传参默认使用cls,可被类调用;类变量通过类名调用,类方法不能访问实例成员静态方法staticmethod装饰,无传参;通过类名访问或者实例对象访问,不能访问类和实例的成员实例方法无装饰,隐式传参,默认传参为self;实例对象和类均可调用,实例方法可以访问类变量方法被所有对象共享代码层面解读
运行结果
以上就是关于静态方法、类方法和实例方法的简单介绍,这里强调一点,cls和self是编程大家都默认这样使用的,这些参数都是可以变化的,但为了编程的一致性,广为流传的使用方法就是类方法cls,实例方法用self,都是表示的对象的地址。
后续持续更新更多干货,欢迎