《Python 类与对象进阶》

《Python 类与对象进阶》

1. 新式类(继承 object)

Python 3 中所有类都是新式类,继承 object 后可以使用 super()、描述符、__slots__ 等魔法:

class OldClass(): # 老式类写法(Python2) def __init__(self): print('I am an old class') class NewClass(object): # 新式类 def __init__(self): print('I am a jazzy new class') old = NewClass() # I am a jazzy new class

建议:即便 Python 3 默认已新式,仍显式继承 object 以保持可读性。

2. 使用 slots 减少内存占用

默认情况下 Python 用 dict 存储实例属性,灵活但浪费内存。对于属性固定的小类,用 __slots__ 让 Python 只分配固定空间的属性:

class PointWithSlots(object): __slots__ = ('x', 'y') def __init__(self, x, y): self.x = x self.y = y

当创建成千上万个对象(尤其实例数量巨大时),__slots__ 能显著减少内存。

3. 单下划线与双下划线前缀

  • _name:约定俗成的“受保护”成员,仅为约定。
  • __name:名称改写(name mangling),ClassName__name,通常用于类内部私有属性防止被子类覆盖。

Reference: https://docs.python.org/3/tutorial/classes.html#private-variables

4. init.py 与 all

  • __init__.py 可将所需模块批量导入,使用方不再逐个 import。
  • __all__ 配合 from module import * 一次性导入模块全部对外符号。

5. format 与 print 中输出 %

% 是格式化特殊字符,需要转义:

print('Hello%%20World%s' % '!') # Hello%20World!
阅读 — · 全站 —
🎸 我的歌单 0 首