mit*_*tal 5 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()
Run Code Online (Sandbox Code Playgroud)
因为我以前没有见过这样的行为(比如在 C++ 中),所以我无法理解这一点。
谁能帮助我理解这一点,这是如何运作的?这可能与 C++ 的某些概念有关吗?
derived_attrib在Python中,属性是在运行时解析的,因此它只是在 引用的对象中查找调用的属性self,并发现有一个。
只要将derived_attrib声明为 的字段A,然后在 中赋值,它就可以在 C++ 中工作B,因为这样编译器就能够弄清楚in 的方法的self.derived_attrib含义。A