Python类属性、实例属性及方法类型详解

星野
星野
发布时间:2026-10-14| 3人浏览过
原创

本文深入解析Python中的类属性与实例属性区别,以及实例方法、类方法和静态方法的定义与调用方式。通过代码示例说明类属性由类对象修改,实例属性由实例访问,并阐述@classmethod和@staticmethod装饰器的作用及参数传递差异,帮助开发者掌握Python面向对象核心概念。

Python类属性与实例属性基础


class MyClass():
  # 直接将属性定义在类中,这种属性称为 类属性
  # 类属性可以通过实列对象和类对象访问,但是只能通过类对象修改
  # 类属性都是用来保存一些公共的数据
  a = 10

  def __init__(self):
    # 可以直接将属性添加到实列对象中,此时这个属性称为实例属性
    # 实例属性只能被实例访问和修改,无法被类访问和修改
    # 一般情况下定义的都是实例属性
    self.b = 'hello'

  # 在类中直接定义的方法,称为实例方法
  # 实例方法,可以通过实例对象和类对象调用
  #  但是注意:通过类对象调用时,不会自动传递self
  def fn(self):
    print('我是fn方法')


  # 在方法前添加classmethod,则该方法自动变成类方法
  #  类方法的第一个参数默认是cls表示当前的类对象
  #  并且类方法既可以通过实例对象调用也可以通过类对象调用
  @classmethod
  def fn2(cls):
    print('我是fn2方法', cls)

  # 添加staticmethod装饰器的方法是 静态方法
  # 静态方法可以通过类和实例调用,并且没有任何默认参数
  # 静态方法是和对象无关的方法,一般静态方法都是一些工具方法
  #  觉得没有地方放了,就放到一个类中
  @staticmethod
  def fn3():
    print('我是fn3方法')

mc = MyClass()
# mc.a = 50
MyClass.a = 30
print(mc.b)
print(MyClass.a)

MyClass.fn(mc)
MyClass.fn2()
mc.fn2()

MyClass.fn3()
mc.fn3()

总结与扩展阅读

关于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 算法库。