学习Python的ABC模块
来源:互联网 发布:手机淘宝软件删不掉 编辑:程序博客网 时间:2024/06/06 02:49
(http://blog.csdn.net/igorzhang/article/details/39026885)
1.abc模块作用
Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块。ABC是Abstract Base Class的缩写。
2.模块中的类和函数
abc.ABCMeta
这是用来生成抽象基础类的元类。由它生成的类可以被直接继承。
from abc import ABCMetaclass MyABC: __metaclass__ = ABCMetaMyABC.register(tuple)assert issubclass(tuple, MyABC)assert isinstance((), MyABC)
上面这个例子中,首先生成了一个MyABC的抽象基础类,然后再将tuple变成它的虚拟子类。然后通过issubclass或者isinstance都可以判断出tuple是不是出于MyABC类。
另外,也可以通过复写subclasshook(subclass)来实现相同功能,它必须是classmethod
class Foo(object): def __getitem__(self, index): ... def __len__(self): ... def get_iterator(self): return iter(self)
class MyIterable: __metaclass__ = ABCMeta @abstractmethod def __iter__(self): while False: yield None def get_iterator(self): return self.__iter__() @classmethod def __subclasshook__(cls, C): if cls is MyIterable: if any("__iter__" in B.__dict__ for B in C.__mro__): return True return NotImplementedMyIterable.register(Foo)
abc.abstractmethod(function)
表明抽象方法的生成器
class C: __metaclass__ = ABCMeta @abstractmethod def my_abstract_method(self, ...): ...abc.abstractproperty([fget[,fset[,fdel[,doc]]]])
表明一个抽象属性
class C: __metaclass__ = ABCMeta @abstractproperty def my_abstract_property(self): ...
上例只是只读属性,如果是读写属性,可以如下:
class C: __metaclass__ = ABCMeta def getx(self): ... def setx(self, value): ... x = abstractproperty(getx, setx)
阅读全文
0 0
- 学习Python的ABC模块
- 学习Python的ABC模块
- Python的ABC模块
- Python的ABC模块
- Python abc模块的几个小知识点
- python abc模块
- Python装饰器、metaclass、abc, six模块学习笔记
- Python装饰器、metaclass、abc模块学习笔记
- Python装饰器、metaclass、abc模块学习笔记
- ABC模块的使用
- Python装饰器、metaclass、abc模块
- python的logging模块学习
- python os模块的学习
- python的学习---- ftplib模块 .
- python os模块的学习
- python re模块的学习
- Python requests模块的学习
- Python furl模块的学习
- SQLi-Labs 学习笔记(Less 31-40)
- 正确判断当前的Fragment是显示还是隐藏
- Git被动式镜像mirror实现
- log4j配置文件中的additivity属性
- 权限Demo
- 学习Python的ABC模块
- Swift 闭包中循环引用解决方式
- java掉用接口,报PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: u
- 能者的表现形式&我的感想
- 求整数N的质因数
- Mybatis 针对Oracle 的批量插入 写法
- Eclipse常用快捷键
- 查看ShadowSocks密码框密码
- Linux-系统的初始化和服务