python 代码的抽象!

python 抽象类
1. 抽象方法表示基类的一个方法,没有实现,所以基类不能实例化,子类实现了该抽象方法才能被实例化
2, abstractmethod表明抽象方法的生成器 abstractproperty 抽象属性
3, TestAll 不能实例化k(属性) V()方法, 子类必须实例化此方法!
4, abc.ABCMeta 是一个metaclass,用于在Python程序中创建抽象基类。
5, @six.add_metaclass(MetaClass) 可以为两个版本的Python类方便地添加metaclass(元类)
6, @six.add_metaclass(abc.ABCMeta) 优雅地声明一个抽象基础类了
7,抽象基类的应用场景:
1)比如一种缓存系统 BaseCache() 需要 redis,cache,mongodb来实现!
2),为了接口的统一,每一个缓存都要实现相同的get() set() 方法!
from six import add_metaclass
from abc import ABCMeta, abstractmethod, abstractproperty

@add_metaclass(ABCMeta)
class TestAll():

    @abstractproperty
    def k(self):
        pass

    @abstractmethod
    def v(self):
        pass

    def c(self):
        print("this is not abstract !")

class T(TestAll):
    k = "this is abstract abstract property"

    def v(self):
        print(self.k)
        print("this is abstract method!")

#Can't instantiate abstract class TestAll with abstract methods k, v
# TestAll()  # it is error
t = T()
t.v()

 

posted @ 2018-11-23 14:25  十七楼的羊  阅读(673)  评论(0编辑  收藏  举报