python面试问了至少三次的知识点,你

北京最佳皮炎医院 http://pf.39.net/bdfyy/bdfzj/210410/8833134.html

人生总有很多巧合的事情,在我身上就发生了这样的一件,那就是最近三次的求职面试,我都被问到了一个相同的问题,那就是“什么是静态方法,实例方法和类方法,它们有什么区别?”现在回过头想想,第一次的回答还是很仓促的,可能也有点紧张,不过比较顺利的是,我还是讲出了80%的点,以至于没有让面试成为泡影。

那么今天呢,我就来聊一聊静态方法、实例方法和类方法。也希望能够帮助到有需要的人们。

语法层面剖析

静态方法

1、语法形态

staticmethod

def方法名称():

方法体

2、调用

类对象.方法名称

实例对象.方法名称

、特点

无参数,方法体中不能访问类或实例的任何属性和方

实例方法

1、语法形态

def方法名称(self,参数列表):

方法体

2、调用

实例对象.方法名称(参数列表)

、特点

self对象,即实例对象可以使用实例的属性和方法,也可以使用类的属性和方法,推荐使用实例的方法调用

类方法

1、语法形态

classmethod

def方法名称(cls,参数方法):

方法体

2、调用

类名.方法名(参数列表)

、特点

cls对象,即类对象可以使用类的属性和方法,但不能传实例的属性和方法

类方法、静态方法、实例方法的区别

类方法

classmethod装饰,隐式传参,传参默认使用cls,可被类调用;类变量通过类名调用,类方法不能访问实例成员静态方法

staticmethod装饰,无传参;通过类名访问或者实例对象访问,不能访问类和实例的成员实例方法无装饰,隐式传参,默认传参为self;实例对象和类均可调用,实例方法可以访问类变量方法被所有对象共享

代码层面解读

运行结果

以上就是关于静态方法、类方法和实例方法的简单介绍,这里强调一点,cls和self是编程大家都默认这样使用的,这些参数都是可以变化的,但为了编程的一致性,广为流传的使用方法就是类方法cls,实例方法用self,都是表示的对象的地址。

后续持续更新更多干货,欢迎


转载请注明:http://www.aierlanlan.com/rzfs/2448.html