Python类方法与静态方法原理及用法详解

阿澈
阿澈
发布时间:2026-10-13| 6人浏览过
原创

本文深入解析Python中类方法(@classmethod)与静态方法(@staticmethod)的定义、原理及调用方式。通过Tool和Dog两个具体代码示例,展示类方法如何访问类属性以统计实例数量,以及静态方法如何在无需实例化的情况下执行特定逻辑。文章对比了两种方法与普通实例方法的区别,帮助开发者正确选择和使用这两种装饰器。

Python类方法与静态方法概述

本文旨在详细阐述Python中类方法(使用@classmethod装饰器)与静态方法(使用@staticmethod装饰器)的核心原理及其实际应用。内容包含具体的代码演示与运行结果分析,供广大Python开发者参考学习。

以下是关于类方法(@classmethod)的完整代码示例:

类方法(@classmethod)原理与示例


class Tool(object):
  # 使用赋值语句定义类属性,记录所有实例化工具对象的数量
  count = 0
  # @classmethod 定义类方法. 第一个参数是cls (cls用于访问类属性和类方法,不能访问实例属性/方法)
  @classmethod
  def show_tool_count(cls):
    # 不能访问实例属性
    print("工具对象的数量 %d" % cls.count) # cls.类属性名 访问类属性(类方法中)
  def __init__(self, name):
    self.name = name # 实例属性
    # 类名.类属性名 访问类属性(实例方法中)
    Tool.count += 1
# 实例化工具对象
tool1 = Tool("斧头")  # tool1.__class__属性指向类对象。 tool1.__class__.count实例对象访问类属性
tool2 = Tool("榔头")
# 类名.类方法 调用类方法
Tool.show_tool_count()

执行上述代码后的输出结果如下:

工具对象的数量 2

接下来是静态方法(@staticmethod)的代码示例:

静态方法(@staticmethod)原理与示例


class Dog(object):
  # @staticmethod 定义静态方法;静态方法内部不能访问类属性/方法和实例属性/方法。不需要传默认参数。
  # Python中的静态方法与在类外部定义的普通函数作用相同,只是表明该函数仅供该类使用。
  @staticmethod
  def run():
    # 不能访问实例属性/类属性
    print("小狗要跑...")
# 类名.静态方法名 调用静态方法,不需要创建对象 (也可以通过实例对象调用)
Dog.run()

执行静态方法代码后的输出结果如下:

小狗要跑...



如果您对Python的其他高级特性感兴趣,推荐查阅本站的《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》以及《Python入门与进阶经典教程》等专题文章。

希望上述关于类方法和静态方法的解析能对您的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 算法库。