1. ホーム
  2. python

[解決済み] Pythonで仮想メソッドを実装するには?

2022-12-03 20:41:12

質問

PHPやJavaの仮想メソッドを知っています。

Pythonでどのように実装することができますか?

それとも、抽象クラスで空のメソッドを定義し、それをオーバーライドしなければならないのでしょうか?

どのように解決するのですか?

もちろん、ベースクラスでメソッドを定義する必要すらありません。Pythonのメソッドは仮想よりも優れています。Pythonの型付けは ダックタイピング .

class Dog:
  def say(self):
    print "hau"

class Cat:
  def say(self):
    print "meow"

pet = Dog()
pet.say() # prints "hau"
another_pet = Cat()
another_pet.say() # prints "meow"

my_pets = [pet, another_pet]
for a_pet in my_pets:
  a_pet.say()

Cat そして Dog は、Pythonの共通の基底クラスから派生させる必要さえなく、この動作を可能にします - あなたは無料でそれを得ることができます。とはいえ、プログラマによっては、クラス階層をより厳密な方法で定義して、より良いドキュメントを作成することを好む人もいますし、クラス階層に いくつかの 型付けの厳密さを課すためです。これはまた可能です。 abc 標準モジュール .