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
我面對這個問題很長一段時間,但還沒有找到一個解決方案。任何想法如何解決這個問題?
似乎在Python函數中是'虛擬'的。如果你需要它的行爲不同,你需要以不同的方式進行設計。 C++和Python不是相同的語言,並且行爲會彼此不同。處理它。 – 2013-05-02 07:03:34
你在問什麼? 'A.func_Y'以何種方式「不起作用」?你甚至不會在你的代碼中調用'A.func_Y'。 – BrenBarn 2013-05-02 07:03:57
@BrenBarn:在'A.func_X'中調用 – Blender 2013-05-02 07:06:29