Fork me on GitHub

【基础12】【自学笔记】python实例方法、类方法与静态方法区别

一. 写法上的差异

类的方法可以分为:

  1. 实例方法:没有任何装饰器的普通函数

  2. 静态方法:有 staticmethod 装饰的函数

  3. 类方法:有 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 的参数。 

二. 方法与函数区别

  1. 普通函数(未定位在类里)和静态方法,都是函数(function )。

  2. 实例方法(@staticmethod)和类方法,都是方法(method )。

三. 总结

实例方法:

  1. 可调用实例方法,使用self.方法名()
  2. 可调用静态方法,使用类名.方法名()
  3. 可调用类方法,使用类名.类名.方法名()

静态方法:

  1. 不可调用实例方法
  2. 可调用类方法,类名.方法名()
  3. 可调用静态方法,类名.方法名()

类方法:

  1. 不可调用实例方法
  2. 可调用类方法,类名.方法名()
  3. 可调用静态方法,类名.方法名()

 

1)什么时候用静态方法
没有访问实例属性、也不访问类属性

2)什么时候用类方法
没有访问实例属性、但访问类属性

  




posted @ 2021-12-25 20:09  橘子偏爱橙子  阅读(125)  评论(0编辑  收藏  举报