面向过程用 函数 处理数据,面向对象用 类 把数据和行为 封装 在一起。
当数据和行为 天然关联 时,面向对象让代码更有组织、更易扩展。
欢迎关注微信公众号
面向过程用 函数 处理数据,面向对象用 类 把数据和行为 封装 在一起。
当数据和行为 天然关联 时,面向对象让代码更有组织、更易扩展。
类是对象的 蓝图/模板 ,定义了对象有哪些 属性 (数据)和 方法 (行为)。
魔术方法(Dunder Methods) :以双下划线包围,让对象像内置类型一样自然。
类本身不会创建数据,需要 实例化 (调用类名)产生对象。
动态添加属性 :Python 允许运行时给实例添加新属性(但不推荐滥用)。
封装 :隐藏内部实现,通过公开接口交互。Python 用 命名约定 (单下划线)表示"私有"。
@property :把方法变成属性一样访问。
继承 :子类自动拥有父类的属性和方法,同时可 扩展 或 重写 。
super() :调用父类的方法,避免显式指定父类名。
多继承 :Python 支持一个子类继承多个父类,按 MRO(方法解析顺序) 查找。
多态让不同的类对同一消息做出 不同的响应 。Python 作为动态语言天然支持。
鸭子类型 :Python 不检查类型,只关心对象是否有需要的方法。
"如果它走起来像鸭子,叫起来像鸭子,那它就是鸭子。"
| 方法 | 触发场景 |
|---|---|
| __init__ | 对象初始化 |
| __str__ | print(obj) / str(obj) |
| __repr__ | 交互式环境 / repr(obj) |
| __eq__ | obj1 == obj2 |
| __lt__ | obj1 < obj2 |
| __len__ | len(obj) |
| __getitem__ | obj[key] |
| __call__ | obj() 像函数一样调用 |