我有:
class A:
def __init__(self):
pass
def func_X(self):
print("Class A: X")
self.func_Y()
def func_Y(self):
print("Class A: Y")
print("Why does not work?")
class B(A):
def __init__(self):
A.__init__(self)
def func_Y(self):
print("Class B: Y")
if __name__ == "__main__":
TEST = B()
TEST.func_X()
OUTPUT:
Class A: X
Class B: Y
问题:为什么使用“ B.func_Y”而不使用“ A.func_Y”?这是虫子吗?如何解决?我需要它与C ++一样工作。 C ++模拟:
#include <iostream>
using namespace std;
class A
{
public:
void func_X() {cout<<"Class A: X"<<endl; func_Y();}
void func_Y() {cout<<"Class A: Y"<<endl;}
};
class B: public A
{
public:
void func_Y() {cout<<"Class B: Y"<<endl;}
};
int main(void)
{
B TEST = B();
TEST.func_X();
return 0;
}
OUTPUT:
Class A: X
Class A: Y
我很长一段时间都面对这个问题,但是没有找到解决方案。任何想法如何解决这个问题?
最佳答案
发生这种情况是因为您在func_Y()
上调用self
。这在C ++中可能等效于在func_Y()
上调用this
。
看这个related question。
似乎您应该执行A.func_Y()
或调用super
而不是self.func_Y()
。
让我知道这是否对您有帮助。
关于c++ - Python 3继承与C++中的相同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16332176/