写小脚本时用字典存用户信息,user['name']、user['age'] 满屏飞,改个字段名全局替换,漏了一处就 KeyError。后来干脆用 python class 重写,编辑器能补全,字段写错当场标红。

一个类最少要有这几样

class User: 开头,__init__ 里赋初值,第一个参数固定写 self。self 不是关键字,只是约定,代表当前实例。方法第一个参数也得是 self,调用时不用传,属性写成 self.name = name。写完后用 isinstance 判断类型,调试方便。

类属性写在 class 下面、方法外面,所有实例共享;实例属性写在 __init__ 里,各存各的。可变对象别做类属性,比如 items = [],所有实例会改到同一个列表,这是新手最常踩的坑。

继承和常用方法

class Admin(User): 就继承了 User 的属性和方法,子类扩展之前先调 super().__init__(...)。__str__ 决定 print 出来的样子,调试时很有用;__repr__ 面向开发者,列表里打印对象看的是它。子类要加字段,先调父类初始化再赋值。

只存数据的类可以用 @dataclass 装饰器,字段声明完自动生成 __init__ 和 __repr__,省掉样板代码。需要按类调用的方法用 @classmethod,完全不用实例的用 @staticmethod。属性想加校验,用 @property 包一层,赋值时自动跑检查。

别为了面向对象而面向对象

只有几个函数、没有状态,用模块级函数更直接。一个类超过几百行、方法十几二十个,通常说明职责太多,该拆了。继承层级太深,三层以上读起来就费劲,组合往往比继承灵活。组合就是把一个类当另一个类的属性,改起来影响面小。

python class 学会 __init__、self、继承这三样,日常脚本够用。真要做大项目,再去看抽象基类、property、类方法这些,不必一上来全背,先把一个类写小写清楚。