美文网首页
4-2 抽象基类

4-2 抽象基类

作者: 正在努力ing | 来源:发表于2018-08-26 15:48 被阅读0次

    相当于Java的接口,
    Java的类实现特性时,是要实现接口
    Python鸭子类型:
    Python去实现一个类的特性时,是不需要继承父类的,去看一个类有什么特性,只要看内部的魔法函数实现

    我们希望某些子类必须实现某些方法

    这份时候就可以用抽象基类

    判断某个对象的类型

    import abc
    
    class cache(metaclass=abc.ABCMeta):
        @abc.abstractmethod
        def get(self,key):
            pass
    
        @abc.abstractmethod
        def set(self,key,value):
            pass
    
    class Redis_cache(cache):
        # def get(self,key):
        #     pass
    
        # def set(self,key,value):
        #     pass
        pass
    
    redie = Redis_cache()
    
    ---------------------------------------------------------------------------
    
    TypeError                                 Traceback (most recent call last)
    
    <ipython-input-1-2a1ab74f1e18> in <module>()
         18     pass
         19 
    ---> 20 redie = Redis_cache()
    
    
    TypeError: Can't instantiate abstract class Redis_cache with abstract methods get, set
    
    class Redis_cache2(cache):
        def get(self,key):
            pass
    
        def set(self,key,value):
            print("success")
    
    redis2 = Redis_cache2()
    redis2.set(1,2)
    
    success
    

    此时的Redis_cache没有实现抽象类的get,set方法,所以报错,提示要去实现
    此时的Redis_cache2实现了抽象类的get,set方法,所以能够正常运行

    from collections.abc import Sized
    isinstance(redis2,Sized)
    
    False
    
    
    

    相关文章

      网友评论

          本文标题:4-2 抽象基类

          本文链接:https://www.haomeiwen.com/subject/ppyoiftx.html