pythonの仮想メソッドはどのように実装されますか。
Pythonでは、スーパークラスでメソッドを作成し、メソッド名の前に@abstractmethodデコレータを配置して抽象メソッドを作成できます。抽象メソッドとは、サブクラスで実装する必要のある抽象的なメソッドであり、スーパークラスは直接抽象メソッドを呼び出すことはできません。
こちらに例を記載します。
from abc import ABC, abstractmethod
class MyBaseClass(ABC):
@abstractmethod
def my_virtual_method(self):
pass
class MySubClass(MyBaseClass):
def my_virtual_method(self):
print("子类实现了虚方法")
# 创建子类实例并调用虚方法
obj = MySubClass()
obj.my_virtual_method()
上の例で、MyBaseClassは仮想メソッドを含む抽象基底クラスです。その中のmy_virtual_methodメソッドは、@abstractmethodデコレータが付加され、このメソッドが仮想メソッドであり、サブクラスで具体的に実装する必要があることを示しています。
MySubClassはMyBaseClassを継承し、仮想メソッドmy_virtual_methodを実装しています。このメソッドはMySubClassのインスタンスを作成し、my_virtual_methodを呼び出して、サブクラスで具体的に実装された動作を実行できます。
サブクラスで仮想メソッドが実装されていなければ、サブクラスインスタンスを作成してその仮想メソッドを呼び出すと、TypeError例外が発生します。