zoukankan      html  css  js  c++  java
  • Python标准库--abc模块

    abc--抽象基类

    注册一个具体类

    class PluginBase(metaclass=abc.ABCMeta):
        @abc.abstractmethod
        def load(self, input):
            pass
    
        @abc.abstractmethod
        def save(self, output, data):
            pass
    
    class LocalBaseClass(object):
        pass
    
    class RegisteredImplementation(LocalBaseClass):
        def load(self, input):
            return input.read()
    
        # def save(self, output, data):
        #     return output.write(data)
    # 注册,可以不必实现所有抽象方法
    PluginBase.register(RegisteredImplementation)
    
    print(issubclass(RegisteredImplementation, PluginBase))
    print(isinstance(RegisteredImplementation(), PluginBase))
    

    继承实现

    class SubclassImpementation(PluginBase):
    
        def load(self, input):
            return input.read()
    
        def save(self, output, data):
            return output.write(data)
    
    # 继承,必须实现所有抽象方法
    print(issubclass(SubclassImpementation, PluginBase))
    print(isinstance(SubclassImpementation(), PluginBase))
    

    读写属性

    class Implementation():
        _value = 'Default value'
    
        def value_getter(self):
            return self._value
    
        def value_setter(self, newvalue):
            self._value = newvalue
    
        value = property(value_getter, value_setter)
        
        # @property
        # def value(self):
        #     return self._value
    
  • 相关阅读:
    数据库
    HTTP请求(Request)和回应(Response)对象
    [Uliweb]-URL映射
    git生成Key操作保存到GITHUB中
    SQL中char、varchar、nvarchar的区别
    Uliweb之 ORM基本使用(Sqlalchemy)
    ORM查询
    CentOS更改ssh端口
    django static文件的引入方式
    Redis持久化策略(RDB &AOF)
  • 原文地址:https://www.cnblogs.com/wj5633/p/7045560.html
Copyright © 2011-2022 走看看