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
関数が完全に上書きされます。say.py
class Test(say.Speaker)
そのため、スクリプトを実行すると、何もしないのではなく単語が出力されます。スクリプトの名前を編集せずにファイル名を動的に変更したいsay.rb
.
私が走っsay.py
てやった場合:
Speaker().do()
何も起こりませんが、他の py モジュールを実行すると、次のようになります。
Test.Do()
継承したので上書きし、 の機能を変更しましたspeak
。そのままでは何Speaker().Do()
もしませんが、私がするTest.Do()
と、オーバーライドのために機能します。
それらは私がpythonで行ったことと同等のルビーですか?もしそうなら、どうすればいいですか?