文章总结: 本文解析Python面向对象机制,阐明类本质是type实例对象。文章解释类体代码在定义时即时执行,分析类属性存储及实例访问的查找原理,指出实例属性可遮蔽类属性,帮助开发者深入理解底层逻辑。
综合评分: 80
文章分类: 其他
Python 面向对象编程——类对象、属性和方法
原创
Lino
Lino
网络技术联盟站
2026年1月22日 18:00
江苏
各位同学,大家好!我是你们的 Python 讲师 Lino。
在 Python 中,很多人把类当成“语法结构”,但从解释器视角看,类本身就是一个对象。 只有理解这一点,你才能真正理解:
- 为什么可以通过类访问属性
- 为什么方法会自动绑定 self
- 为什么 classmethod 和 staticmethod 存在
类对象是什么?
先看最简单的代码:
class User:
pass
验证两件事:
print(User)
print(type(User))
输出类似:
结论非常明确:
类是 type 的实例,是一个对象。
既然是对象,就具备三个能力:
- 可以被引用
- 可以拥有属性
- 可以作为参数传递
类体代码:不是声明,而是执行
这是一个非常容易被忽略的点。
class Demo:
print(“class body executing”)
x = 10
当解释器读到 class Demo: 时,会立即执行类体代码:
class body executing
然后:
- 把执行过程中产生的名字
- 收集到类对象的命名空间中
验证:
print(Demo.dict.keys())
类属性:挂在类对象上的数据
class Config:
timeout = 30
这里:
- timeout 是类属性
- 存放在 Config.__dict__
访问方式:
print(Config.timeout)
通过实例访问:
c = Config()
print(c.timeout)
实例访问类属性,本质是“向上查找”,不是复制。
类属性与实例属性的遮蔽关系
class User:
role = “guest”
u = User()
print(u.role)
现在修改实例:
u.role = “admin”
再次输出:
print(u.role)
print(User.role)
结果:
admin
`
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络技术联盟站 Lino
Lino《Python 面向对象编程——类对象、属性和方法》