Python中定义类用class关键字,类是模板,实例是具体对象;类描述共性,实例承载个性;__init__是初始化方法而非构造方法,负责设置已创建实例的初始值。

Python中定义类用 class 关键字,类是创建对象的模板,实例是类的具体化对象。理解类与实例的关系,关键在于区分“定义”和“使用”:类描述共性(属性和行为),实例承载个性(独立的数据状态)。
类的定义语法与基本结构
类定义以 class 类名: 开头,后跟缩进的代码块。通常包含文档字符串、类属性、方法(尤其是 __init__ 初始化方法):
- 类名一般采用 PascalCase(大驼峰)命名,如 Student、HttpRequest
- __init__ 是实例创建时自动调用的初始化方法,第一个参数必须是 self,代表当前实例
- 通过 self.属性名 = 值 给实例绑定属性;类内定义的函数默认为实例方法,也需写 self 参数
示例:
class Dog:
species = "Canis lupus" # 类属性,所有实例共享
<pre class="brush:php;toolbar:false;">def __init__(self, name, age):
self.name = name # 实例属性,每个实例独立
self.age = age
def bark(self):
return f"{self.name} says woof!"
立即学习“Python免费学习笔记(深入)”;
实例的创建与访问机制
用 类名(参数...) 创建实例,这会触发 __init__ 方法执行。每个实例拥有自己的一套实例属性,但共享类属性和方法:
Sylius开源电子商务平台是一个开源的 PHP 电子商务网站框架,基于 Symfony 和 Doctrine 构建,为用户量身定制解决方案。可管理任意复杂的产品和分类,每个产品可以设置不同的税率,支持多种配送方法,集成 Omnipay 在线支付。功能特点:前后端分离Sylius 带有一个强大的 REST API,可以自定义并与您选择的前端或您的微服务架构很好地配合使用。如果您是 Symfony
- 实例属性通过 实例.属性名 访问或修改(如 dog1.name = "Leo")
- 调用实例方法直接用 实例.方法名(),无需传入 self,Python 自动绑定
- 可通过 实例.__class__ 查看所属类,用 实例.__dict__ 查看该实例独有的属性字典
例如:
dog1 = Dog("Max", 3)
dog2 = Dog("Luna", 5)
<p>print(dog1.bark()) # Max says woof!
print(dog1.species) # Canis lupus(来自类)
print(dog1.<strong>dict</strong>) # {'name': 'Max', 'age': 3}
</p>类属性 vs 实例属性:容易混淆的关键点
类属性在 class 语句下直接定义,属于类本身;实例属性在 __init__ 或其他方法中通过 self. 创建,属于具体对象:
- 修改类属性(如 Dog.species = "Canis familiaris")会影响所有未覆盖该属性的实例
- 若对某实例赋值同名属性(如 dog1.species = "New"),实际是给 dog1 新增了实例属性,遮蔽了类属性,不影响其他实例
- 可借助 类名.属性名 显式访问类属性,避免歧义
__init__ 不是构造方法,而是初始化方法
Python 中真正的构造过程由 __new__ 完成(极少重写),__init__ 只负责对已创建的实例设置初始值。它不返回值(或隐式返回 None),也不控制对象生成逻辑:
- 如果 __init__ 抛出异常,实例仍会被创建,但初始化失败,对象处于不完整状态
- 不需要手动调用 super().__init__(),除非继承自有自定义 __init__ 的父类且需复用其逻辑
- 可接受任意参数(包括 *args、**kwargs),用于灵活初始化
不复杂但容易忽略。









