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的接口