Python:在基类中使用派生类属性

时间:2016-08-18 09:56:30

标签: python inheritance

当我遇到这个特殊的代码时,我正在阅读一些代码,其中基类方法打印一些来自派生类的属性,调用方法的对象来自派生。

class A(object):
  def printFreak(self):
    print self.derived_attrib

class B(A):
  def __init__(self, num):
    self.derived_attrib = num

my_obj = B(10)
my_obj.printFreak()

由于我之前没有见过这样的行为(比如在C ++中),我无法理解这一点。

任何人都可以帮助我理解这一点,这是如何工作的?这可能与C ++的一些概念有关吗?

1 个答案:

答案 0 :(得分:2)

在Python中,属性是在运行时解析的,因此它只是在derived_attrib所引用的对象中查找名为self的属性,并发现有一个。

只要将derived_attrib声明为A的字段,然后在B中进行赋值,它就可以在C ++中工作,因为这样编译器便可以找出{{1 }}是self.derived_attrib方法中的意思。