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()