human
I am working on the file "Note/第二章. 抽象数据类型和 Python 类.ipynb".
The first task is:
首先建立一个实例对象，会自动调用初始化方法，为什么 B 的 init 会被调用：因为 D 没有定义 init，所以会在 MRO 中找下一个类，去查看它有没有定义 init，也就是去调用 B 的 init。
在 MRO 中，基类永远出现在派生类后面，如果有多个基类，基类的相对顺序保持不变
上面的例子的继承链（MRO顺序）：[D, B, C, Root, Object]
_slots_
当我们通过一个类创建了实例之后，仍然可以给实例动态添加属性，但是这些属性只属于这个实例。
有些时候，我们可以需要限制类实例对象的属性，这时就要用到类中的__slots__属性了。__slots__属性对于一个tuple，只有这个tuple中出现的属性可以被类实例使用。

使用__slots__要注意，__slots__定义的属性仅对当前类的实例起作用，对继承的子类实例是不起作用的
如果子类本身也有_slots__属性，子类的属性就是自身的__slots__加上父类的__slots_

实例不超过万级别的类，__slots__是不太值得使用的。
Can you write Python program for it?
 ... Give me a the Python program you requested?
assistant
#Here is the Python program you requested.

class Parent(object):
    __slots__ = ('name')          # __slots__
    def __init__(self, name):
        self.name = name
        
a = Parent('ly')
print a.name
Parent.age = 25    # slots对通过类名动态添加属性没有限制
print a.age