在 python 中,我可以这样做:
# 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()
如果我运行它,原始speak
函数 insay.py
将被完全覆盖,因为我继承了它:
class Test(say.Speaker)
所以当我运行脚本时,它会打印这个词而不是什么都不做。我希望脚本的名称能够动态更改文件名,而无需编辑say.rb
.
如果我跑了say.py
并且做了:
Speaker().do()
什么都没有发生,但是当我运行另一个 py 模块并让它执行时:
Test.Do()
因为我继承了它,所以它被覆盖了,并且改变了speak
. Speaker().Do()
照原样做没有任何作用,但如果我这样做,Test.Do()
它确实会因为覆盖而起作用。
它们是我在 python 中所做的红宝石等价物吗?如果是,我该怎么做?