pythonにおける抽象ベースクラスおよび関連用途
928 ワード
一、抽象ベースクラス(abcモジュール)とは何ですか.
抽象ベースクラスとは、具体的な実装を行わずに様々なメソッドを定義するクラスであり、抽象ベースクラスから継承されたクラスは、これらのメソッドを実装する必要があります.そうしないと、インスタンス化できません.
抽象ベースクラスはインスタンス化できません(オブジェクトを作成できません)、通常はベースクラスとしてサブクラスに継承され、サブクラスでは虚関数を書き換え、具体的なインタフェースを実現します.
二、用途
1、あるクラスに何らかの方法があるかどうかをチェックする
2、抽象ベースクラス実装子クラスは親クラスのメソッドを書き換える必要がある
サブクラスではset、getメソッドを書き換える必要があります.そうしないとTypeError:Can't instantiate abstract class RedisBase with abstract methods get,set
抽象ベースクラスとは、具体的な実装を行わずに様々なメソッドを定義するクラスであり、抽象ベースクラスから継承されたクラスは、これらのメソッドを実装する必要があります.そうしないと、インスタンス化できません.
抽象ベースクラスはインスタンス化できません(オブジェクトを作成できません)、通常はベースクラスとしてサブクラスに継承され、サブクラスでは虚関数を書き換え、具体的なインタフェースを実現します.
二、用途
1、あるクラスに何らかの方法があるかどうかをチェックする
from collections.abc import Sized
....
print(isinstance(d,Sized)) #d , true false
2、抽象ベースクラス実装子クラスは親クラスのメソッドを書き換える必要がある
import abc
class CacheBase(metaclass=abc.ABCMeta):
@abc.abstractmethod
def get(self,key):
pass
@abc.abstractmethod
def set(self,key,value):
pass
class RedisBase(CacheBase):
def set(self,key,value):
pass
def get(self,key):
pass
r = RedisBase()
サブクラスではset、getメソッドを書き換える必要があります.そうしないとTypeError:Can't instantiate abstract class RedisBase with abstract methods get,set