03.2 抽象基类

抽象基类

抽象基类, 在类中设定好方法,且所有继承这个类都需要重写这些方法,抽象基类不能被实例化,个人感觉就是定义框架规则,让用户自定义实现,但是给了整体的架构

代码


class Duck:
    def say(self):
        print("duck saying 嘎.")


# hasattr(Duck(), "say") 判断类中是否有x的方法/属性
print(hasattr(Duck(), "say"))

# 判断对象的类型
print(isinstance(Duck(), Duck))

import abc


# 定义一个抽象类
class CacheBase(metaclass=abc.ABCMeta):
    # 定义抽象方法
    @abc.abstractmethod
    def get(self, key):
        pass

    @abc.abstractmethod
    def set(self, key, value):
        pass


class RedisCache(CacheBase):
    """必须实现get/set方法"""
    # TypeError: Can't instantiate abstract class RedisCache with abstract methods get, set
    pass

rc = RedisCache()
原文地址:https://www.cnblogs.com/zy7y/p/14192042.html