假设我创建了一个名为A()的类,其中包含两个自定义方法。 当我实例化它时,将在该实例的内存表示中的某个地址中创建一个对象。 现在我创建一个A的子类,例如B(A),并在其中定义一个自定义方法。 我的问题是,当我实例化B时,在内存中创建的对象也会“包含”A类的数据,即两个自定义方法?
答案 0 :(得分:3)
该实例仅引用它的类。除了类定义之外,不需要额外的内存来保存这两种方法。
从内存的角度来看,类定义本身不过是对基类的重新引用的元组,对它的元类型(默认为type()
)的引用和属性的字典(其中包括所有方法。)
实例只是对类的引用,加上属性字典或使用__slots__
时的一组固定属性(后者更节省内存但不允许设置任意额外属性)。