首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python继承的类行为

Python继承的类行为
EN

Stack Overflow用户
提问于 2018-06-01 05:35:18
回答 1查看 44关注 0票数 -1

在下面的代码中,我有一个关于python继承类方法的问题。

代码语言:javascript
复制
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()

当我运行此代码时,结果是

代码语言:javascript
复制
Call from C

父类方法将调用子类的方法。我想知道这是否是一种预期的、稳定的行为?因为我还在C++中尝试了相同的逻辑,所以它将打印

代码语言:javascript
复制
Call from B
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 05:59:57

作为对切普纳答案的补充,这段C++代码表现出与您在Python中完全相同的行为:

代码语言:javascript
复制
#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++,你会认为所有的成员都是公共的,所有的方法都是虚的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50633124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档