pythonにおける抽象ベースクラスおよび関連用途

928 ワード

一、抽象ベースクラス(abcモジュール)とは何ですか.
抽象ベースクラスとは、具体的な実装を行わずに様々なメソッドを定義するクラスであり、抽象ベースクラスから継承されたクラスは、これらのメソッドを実装する必要があります.そうしないと、インスタンス化できません.
抽象ベースクラスはインスタンス化できません(オブジェクトを作成できません)、通常はベースクラスとしてサブクラスに継承され、サブクラスでは虚関数を書き換え、具体的なインタフェースを実現します.
 
 
二、用途
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