在python面向对象编程中,方法调用主要围绕实例方法、类方法和静态方法展开。弄清楚它们的定义方式和调用规则,才能写出结构清晰的类。

一、实例方法
实例方法是最常用的方法,第一个参数必须是self,代表对象本身。它通过类的实例来调用,python会自动把当前对象传给self。
class Dog:
def __init__(self, name):
self.name = name
# 实例方法,self为必填参数
def bark(self):
print(self.name + '在叫')
# 创建实例
d = Dog('小白')
# 通过实例调用方法
d.bark()
二、类方法
类方法使用@classmethod装饰器定义,第一个参数为cls,指向类本身。可以通过类直接调用,也可以通过实例调用。
class Cat:
count = 0
def __init__(self):
Cat.count += 1
# 类方法,cls代表类
@classmethod
def get_count(cls):
return cls.count
# 通过类调用
print(Cat.get_count())
c = Cat()
# 通过实例调用
print(c.get_count())
三、静态方法
静态方法用@staticmethod装饰,不需要self或cls参数,相当于放在类里的普通函数。它通过类或实例调用,适合写和类相关但不依赖类或对象数据的逻辑。
class MathTool:
@staticmethod
def add(a, b):
return a + b
# 通过类调用静态方法
print(MathTool.add(3, 5))
# 通过实例调用也可以
m = MathTool()
print(m.add(1, 2))
四、三种方法对比
| 方法类型 | 装饰器 | 首参数 | 调用方式 |
|---|---|---|---|
| 实例方法 | 无 | self | 对象.方法() |
| 类方法 | @classmethod | cls | 类.方法()或对象.方法() |
| 静态方法 | @staticmethod | 无 | 类.方法()或对象.方法() |
五、使用建议
如果方法需要访问或修改对象属性,用实例方法;如果只操作类级别的数据如类变量,用类方法;如果逻辑独立只是归类管理,用静态方法。合理选择能让代码更易维护。