【基础12】【自学笔记】python实例方法、类方法与静态方法区别
一. 写法上的差异
类的方法可以分为:
-
实例方法:没有任何装饰器的普通函数
-
静态方法:有
staticmethod
装饰的函数 -
类方法:有
classmethod
装饰的函数
举个例子,如下这段代码中,run
普通的实例方法,eat
是静态方法,jump
是类方法。
class Animal:
#初始化方法 def __init__(self, name): self.name = name #实例方法 def run(self): print(f"{self.name}跑起来啦") #静态方法 @staticmethod def eat(): print("正在吃饭...") #类方法 @classmethod def jump(cls, name): print(f"{name}跳起来啦")
这三种方法,在写法有很大的区别:
1)普通的实例方法,在定义时,他的第一个方法固定是 self,如果是从实例调用,那么 self 参数 不需要传入,如果是通过类调用,那么 self 要传入已经实例化的对象。
2)静态方法,在定义时,不需要 self 参数。
3)类方法,在定义时,第一个参数固定是 cls,为 class 的简写,代表类本身。不管是通过实例还是类调用类方法,都不需要传入 cls 的参数。
二. 方法与函数区别
-
普通函数(未定位在类里)和静态方法,都是函数(
function
)。 -
实例方法(@staticmethod)和类方法,都是方法(
method
)。
三. 总结
实例方法:
- 可调用实例方法,使用self.方法名()
- 可调用静态方法,使用类名.方法名()
- 可调用类方法,使用类名.类名.方法名()
静态方法:
- 不可调用实例方法
- 可调用类方法,类名.方法名()
- 可调用静态方法,类名.方法名()
类方法:
- 不可调用实例方法
- 可调用类方法,类名.方法名()
- 可调用静态方法,类名.方法名()
1)什么时候用静态方法 没有访问实例属性、也不访问类属性 2)什么时候用类方法 没有访问实例属性、但访问类属性
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/15731466.html