深入解析Python中的实例方法、类方法和静态方法

Noah
Noah
发布时间:2026-10-13| 5人浏览过
原创

本文详细解析Python中实例方法、类方法和静态方法的区别与应用。通过具体代码示例,说明实例方法需实例化调用,类方法通过@classmethod修饰并接收类对象,静态方法通过@staticmethod修饰且与类状态无关。掌握这三类方法的定义、参数及调用方式,有助于编写更规范的Python面向对象代码。

实例方法/对象方法

1、实例方法/对象方法

实例方法(或称对象方法)是指在类内部定义的常规方法。这类方法必须在类被实例化为对象后,由该实例对象进行调用。其定义的关键特征是,方法的第一个形参必须接收对象本身(通常命名为self)。

静态方法

2、静态方法

(1). 格式:在方法定义上方添加 @staticmethod 装饰器。 (2). 参数:静态方法可以接受参数,也可以不接受任何参数。 (3). 应用场景:通常用于处理与类对象及实例对象均无直接关联的逻辑代码。 (4). 使用方式:既可以通过类名调用(类名.方法名),也可以通过实例对象调用(对象名.方法名)。

定义一个静态方法的示例如下:


class Game:

  @staticmethod
  def menu():
    print('------')
    print('开始[1]')
    print('暂停[2]')
    print('退出[3]')


Game.menu()

类方法

3、类方法

类方法无需实例化类即可直接调用,但其方法的第一个参数必须接收类本身。 (1). 在方法定义上方添加 @classmethod 装饰器。 (2). 方法的第一个参数通常命名为 cls,也可使用其他名称,但约定俗成使用 cls。 (3). cls 指向当前类对象。 (4). 应用场景:当方法仅涉及静态属性或需要修改类属性时,适合使用类方法。 (5). 使用方式:既可以通过类名调用(类名.方法名),也可以通过实例对象调用(对象名.方法名)。


class Person:
  type = '人类'

  @classmethod
  def test(cls):
    print(cls.type)


Person.test()

举例:使用类方法对商品进行统一打折处理


class Goods:
  __discount = 1

  def __init__(self, name, price):
    self.name = name
    self.price = price

  @classmethod
  def change_discount(cls, new_discount):
    cls.__discount = new_discount

  @property
  def finally_price(self):
    return self.price * self.__discount


banana = Goods('香蕉', 10)
apple = Goods('苹果', 16)
Goods.change_discount(0.8)
print(banana.finally_price)
print(apple.finally_price)

Goods.change_discount(0.5)
print(banana.finally_price)
print(apple.finally_price)

输出结果为:

8.0 12.8 5.0 8.0

以上所述是小编给大家介绍的python中的实例方法、类方法和静态方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。