python的面向接口编程

class Feature:
    def __init__(self, name): self.name = name
    def move(self): pass


class Duck(Feature):
    def move(self): print(f'{self.name} is walking')


class Bird(Feature):
    def move(self): print(f'{self.name} is flying')


def feature_move(one):
    one.move()


if __name__ == '__main__':
    Donald = Duck('Donald')
    Eagle = Bird('Eagle')
    feature_move(Donald)
    feature_move(Eagle)

其实这里的超类定义的move,就是个接口了,只是没有java interface那样强制子类必须实现它

要实现也可以,用@abstractmethod

接口的好处:

1、你在main代码里去点feature_move 会到one.move()去,但是这边的move,你是找不到代码的,做到了屏蔽

2、move被各个子类实现自己编写,所以解耦了业务复杂性。

这就是python的接口

原文地址:https://www.cnblogs.com/july401/p/14144974.html