0

假设我创建了一个名为 A() 的类,其中包含两个自定义方法。当我实例化它时,将在表示此实例的内存中的某个地址中创建一个对象。现在我创建 A 的一个子类,例如 B(A),并在其中定义一个自定义方法。我的问题是,当我实例化B时,在内存中创建的对象也会“包含”类A的数据,即两个自定义方法?

4

1 回答 1

3

该实例仅引用它的类。除了类定义之外,不需要额外的内存来保存这两个方法。

从内存的角度来看,类定义本身只不过是对基类的引用元组、对其元类型的引用(type()默认情况下)和属性字典(包括所有方法)。

实例只是对类的引用,加上属性字典或使用时的一组固定属性__slots__(后者更节省内存,但不允许设置任意额外属性)。

于 2013-05-23T12:32:46.883 回答