1. MRO: method resolution order
lookup order:
L(MyClass) = [MyClass, merged(L(Base1), L(Base2), Base1, Base2)]
2. super(...)
必须所有的父类都call super, 不然会有不可预测的问题
3. class variable & instance variable
查找顺序
都可以通过 self.x 访问, 所以instance variable 会覆盖class variable, 而class variable 可以用来定义一个default value for instance variable.
如果是mutable的,会有些特殊
4. descriptor
只能定义在class level, 可以通过在instance里记录每次设置的value来为每个instance 定义不同的value for class variable