我有:
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”无效?这是bug?如何解决?我需要它像在 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
我面对这个问题很长时间,但没有找到解决方案。知道如何解决这个问题吗?