通过使用多重继承和抽象类的组合,你可以在Python中使用一种叫做接口的设计模式。接口是面向对象编程中的一种常见技术,像 C# 和 Java 这样的编程语言原生地实现了这一特性。接口实际上不是Python语言本身的一部分,但你仍然可以在Python中使用这种类型的设计模式。在接口中是一个承诺,或者说契约,它迫使一个给定的类实现一个给定的行为。我们现在来看看如何在Python中这样做。
from abc import ABC, abstractmethod
class Networkdevice(ABC):
def __init__(self):
super().__init__()
@abstractmethod
def poweron(self):
pass
class Routify(ABC):
@abstractmethod
def route(self):
pass
class Router(Networkdevice, Routify):
def __init__(self):
super().__init__()
def poweron(self):
print('Ready to process traffic')
def route(self):
print('Routify success')
r = Router()
r.poweron()
r.route()
Ready to process traffic
Routify success
上面的代码使用了一个[抽象基类],我们不久前才了解到。在第19行还发生了[多重继承],在那里 **Routify**类被传递到 **Router**类作为第二个参数。在第13行到第16行的高亮部分定义了接口。这个类继承自ABC,它被用来定义一个契约。它实际上并不做什么,它几乎就像文档一样。现在你可以用这个类对其他类执行一个规则,以确保它们实现了 route()方法。在上面的代码中,我们在Router类中继承了Routify类。既然是这样,那么这个Router必须实现route()方法。如果没有实现,将抛出一个错误,代码将无法运行。