在Python中,我可以做這樣的事情:的Python像Ruby繼承
# say.py
class Speaker:
def speak(self,word):
pass
def Do(self):
self.speak("hello")
Speaker().Do()
如果我跑這一點,那就什麼也不做。我能做到這一點在其他模塊:
import say
class Test(say.Speaker):
def speak(self,word):
print(word)
Test().Do()
如果我跑這一點,因爲我繼承了它,當我做在say.py
原speak
功能被完全改寫:
class Test(say.Speaker)
所以,當我運行該腳本,它會打印這個詞而不是無所事事。我希望腳本的名稱能夠動態更改文件名,而無需編輯say.rb
。
如果我跑say.py
並做:
Speaker().do()
什麼也不會發生,但是當我運行其他PY模塊,並將它做的事:
Test.Do()
因爲我繼承了它,它被覆蓋,並改變了speak
的功能。做Speaker().Do()
,因爲它沒有做任何事情,但如果我做Test.Do()
,它確實工作,因爲覆蓋。
他們是一個紅寶石的等價物,我在Python中做了什麼,如果是的話,我該怎麼做呢?
謝謝你,這讓我很難相處,因爲你解決了我的問題。 – anakin