[解決済み] 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
標準モジュール
.
関連
-
[解決済み】Pythonのvirtualenvを離脱/終了/無効化する方法
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] C++で仮想関数が必要な理由とは?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Pythonで抽象クラスを作ることは可能か?
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Python 言語を決定するには?