python中接口的一种新方法

strict-interfaces的Python项目详细描述


python严格接口

安装

pip install strict-interfaces

设计目标

  • 尽可能严格
  • 导入时间失败
  • 不要弄乱object和/或type继承
  • 集成到Cpyhon Core中的可能性
  • 能够使用“开箱即用”而不必考虑译员的支持

功能

  • 类定义上的特殊关键字implements
  • 多接口实现
  • 隐式接口实现
  • 限制重载的接口继承
  • 特殊的isimplementation功能类似于issubclass
  • 部分issubclass支持(见下文)
  • 仅限于创建接口实例
  • 限制同时从objectinterface继承

用法

显式实现

classTestInterface(interfaces.interface):defmethod(self,arg:typeT1)->typeT2:passclassTestClass(interfaces.object,implements=[TestInterface]):defmethod(self,arg:typeT1)->typeT2:pass

未实现时引发

classTestInterface(interfaces.interface):defmethod(self,arg):passclassTestClass(interfaces.object,implements=[TestInterface]):pass

隐式实现和运行时检查

classTestInterfaceA(interfaces.interface):defmethod_a(arg:typeT1)->typeT1:passclassTestInterfaceB(interfaces.interface):defmethod_b(arg:typeT2)->typeT2:passclassTestClass:defmethod_a(arg:typeT1)->typeT1:passdefmethod_b(arg:typeT2)->typeT2:passassertinterfaces.isimplementation(TestClass,(TestInterfaceA,TestInterfaceB))

isimplementation检查是否实现了所有接口

classTestInterfaceA(interfaces.interface):defmethod_a(arg:typeT1)->typeT1:passclassTestInterfaceB(interfaces.interface):defmethod_b(arg:typeT2)->typeT2:passclassTestClass:defmethod_a(arg:typeT1)->typeT1:pass# NOTE: In this case `isimplementation` behaves different than `issubclass`assertnotinterfaces.isimplementation(TestClass,(TestInterfaceA,TestInterfaceB))assertissubclass(TestClass,(TestInterfaceA,TestInterfaceB))

贡献

拉式请求、功能请求和错误报告总是受欢迎的!

github.com/lig/python-interfaces

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用SeleniumWebDriver捕获特定元素的屏幕截图而不是整个页面?   WAS 8.5中的java JAXWS异步IO异常   java Android Studio无法解析数组适配器中的符号项   swing Java在运行时添加和删除按钮   java Spring Boot 2.0。x禁用特定配置文件的安全性   java这是我的最后一个代码,我在“if(Users[B].substring(0,1)==“1”){//Find String Cut Char Function”上遇到错误   单击菜单选项后打开“活动”时发生java错误   java Tic Tac Toe NullPointerException   java如何做数学题。随机进入for循环   java Http状态404错误处理spring mvc   java循环依赖双向@OneToMany JPA关系   java我可以在不重新启动项目的情况下添加servlet吗   java在蓝色/绿色部署中如何管理共享数据库?   这是一个系统。currentTimeMillis()是Java中时间性能的最佳度量?