在下面的代码中,我有一个关于python继承类方法的问题。
class B(object):
def test(self):
self.call()
def call(self):
print("Call from B")
if __name__ == "__main__":
b = B()
b.test()
from b import B
class C(B):
def call(self):
print("Call from C")
if __name__ == "__main__":
c = C()
c.test()
当我运行此代码时,结果是
Call from C
父类方法将调用子类的方法。我想知道这是否是一种预期的、稳定的行为?因为我还在C++中尝试了相同的逻辑,所以它将打印
Call from B
发布于 2018-06-01 05:59:57
作为对切普纳答案的补充,这段C++代码表现出与您在Python中完全相同的行为:
#include <iostream>
class B {
public:
void test() {
call();
}
virtual void call() {
std::cout << "Called from B" << std::endl;
}
};
class C: public B {
public:
void call() {
std::cout << "Called from C" << std::endl;
}
};
int main() {
C c;
c.test(); // will print Called from C
return 0;
}
如果你来自C++,你会认为所有的成员都是公共的,所有的方法都是虚的。
https://stackoverflow.com/questions/50633124
复制相似问题