14 9 月
Python 里的每个运算符、每个内置函数、每一处语法,都是在向你的对象提问。数据模型就是这些问题的清单。
Learn AI Coding, AI Agents and Software Engineering by Building Real Projects
__slots__ 去掉了每个实例自带的字典。对象一多,能省下实实在在的内存,还顺带拦住拼写错误,但不适合当默认选择。
鸭子类型要到调用时才报错,那时离犯错的地方已经很远。抽象基类和 Protocol 都能解决这个问题,只是方向正好相反。
asdict() 把数据类(dataclass)转成字典,一路递归到底,边走边拷贝。多数时候你要的正是这样,偶尔却完全不是。
Python 有四种存放结构化数据的方式。选哪种不是风格问题,关键在于:拼错一个名字时,你希望程序立刻报错吗?
该用哪种方法,只取决于方法需要什么:当前实例、类,还是都不需要。选错了,子类会悄无声息地出问题。
Python 用不着 getter 和 setter,因为 @property 让你以后再加校验时,一个调用方都不用改。
没有 __repr__ 的类,从写出来那天起就在浪费你的时间。repr 给你自己看,str 给读者看,而两者中只有一个有像样的回退。