在python中创建接口和可交换的实现

2024-06-27 02:19:57 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能用python和接口的各种实现创建一个类接口。在

示例:我想为pop3访问(以及所有方法等)创建一个类。如果我使用的是商业组件,我希望包装它以遵守合同。在

将来,如果我想使用另一个组件或编写自己的代码,我希望能够交换这些组件,而不是将它们紧密地耦合在一起。在

可能吗?我是python新手。在


Tags: 方法代码示例组件商业pop3新手
3条回答

当然。在这种情况下也不需要创建基类或接口,因为一切都是动态的。在

对于具有强类型语言背景的人来说,Python不需要类接口。您可以使用基类来模拟它。在

class BaseAccess:
  def open(arg):
    raise NotImplementedError()

class Pop3Access(BaseAccess):
  def open(arg):
    ...

class AlternateAccess(BaseAccess):
  def open(arg):
    ...

但是您可以轻松地编写相同的代码,而无需使用BaseAccess。强类型语言需要在编译时进行类型检查的接口。对于Python,这是不必要的,因为所有内容都是在运行时动态查找的。Google 'duck typing'因为它的哲学。在

Python2.6中添加了一个抽象基类模块。但我还没用过。在

一种选择是使用zope interfaces。但是,正如Wai Yip Tung所说,您不需要使用接口来获得相同的结果。在

zope.interface包实际上更像是发现如何与对象交互的工具(通常是在具有多个开发人员的大型代码库中)。在

相关问题 更多 >