接口类可以规范代码,但接口类本身是不实现的
class Payment: def pay(self,money): raise Notlmplemented class Wechat(Payment): def pay(self, money): print(‘已经用微信支付了%s元‘ % money) class Alipay(Payment): def pay(self, money): print(‘已经用支付宝支付了%s元‘ % money) class Applepay(Payment): def fuqian(self, money): print(‘已经用applepay支付了%s元‘ % money) def pay(pay_obj, money): # 统一支付入口 pay_obj.pay(money) wechat = Wechat() ali = Alipay() app = Applepay() pay(ali,200) pay(app,200)
运行后如下
app = Applepay() TypeError: Can‘t instantiate abstract class Applepay with abstract methods pay
以下是接口类的另一种写法
from abc import abstractmethod, ABCMeta class Payment(metaclass=ABCMeta): # 元类 默认的元类 type @abstractmethod def pay(self, money): pass # 没有实现这个方法
接口类在python中不存在,只是一种规范,python中自带多继承所以我们直接用class来实现接口类
多态指的是一类事物有多种形态
动物有多种形态:人,狗猪
import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): print(‘say hello‘) class Dog(Animal): #动物的形态之二:狗 def talk(self): print(‘say wangwang‘) class Pig(Animal): #动物的形态之三:猪 def talk(self): print(‘say aoao‘)
原文:https://www.cnblogs.com/iswuyi/p/10783964.html