Python中类是对象模板,实例化生成独立对象并分配内存;实例属性属单个对象,类属性被所有实例共享;点号或getattr/setattr访问属性;self是实例方法必含的隐式参数。

Python中,类是创建对象的模板,对象是类的具体实例。实例化就是用类生成一个对象的过程,而属性则是对象所拥有的数据或行为特征。
类定义与实例化:从模板到具体对象
定义类使用 class 关键字,类名通常大驼峰命名;实例化就是调用类名加括号,像函数一样执行,返回一个新对象。
- 类本身不占用内存空间,只有实例化后才分配内存并生成真实对象
- 每次实例化都会创建独立的对象,彼此属性互不影响
- 如果类中定义了 __init__ 方法,它会在实例化时自动调用,用于初始化对象状态
实例属性 vs 类属性:作用域和生命周期不同
实例属性属于某个具体对象,在 __init__ 中通过 self.xxx = value 定义;类属性属于类本身,在类体中直接定义,所有实例共享同一份值。
- 修改实例属性只影响当前对象;修改类属性会影响所有未覆盖该属性的实例
- 若在实例上赋值同名属性(如 obj.name = 'new'),会新建实例属性,遮蔽类属性
- 推荐把不变的配置、常量设为类属性,把每个对象独有的状态设为实例属性
访问与动态设置属性:点号操作与内置函数
最常用的是用点号(.)读写属性,如 obj.age = 25 或 print(obj.name);也可用 getattr()、setattr()、hasattr() 等函数安全操作。
立即学习“Python免费学习笔记(深入)”;
- 点号访问简洁直观,但属性名必须是已知的合法标识符
- 函数方式适合属性名来自变量、配置或用户输入等动态场景
- 尝试访问不存在的属性会触发 AttributeError,可用 getattr(obj, 'key', default) 提供默认值避免报错
理解 self:指向当前实例的隐式参数
self 是实例方法的第一个形参,Python 自动传入调用该方法的对象本身。它不是关键字,但约定俗成必须叫 self,且必须显式写出。
- 在类内部,所有实例属性和方法都通过 self.xxx 访问,否则会被当作局部变量处理
- 定义方法时写了 self,调用时不用传 —— Python 自动补上
- 误删 self 会导致“缺少参数”错误;误写成其他名字虽不报错,但违背规范且易引发混淆










