python中的接口类的单继承
1.例如实现两个支付方式微信支付和支付宝支付
class wechatpay(Payment):
def pay(self,money):
print('使用微信付了%s的钱'%(money))
class alipay(Payment):
def pay(self,money):
print('使用支付宝付了%s的钱'%(money))
wechat = wechatpay()
wechat.pay(200)
ali = alipay()
ali.pay(300)
2.现在想用一个方法就能实现上面的调用
class wechatpay(Payment):
def pay(self,money):
print('使用微信付了%s的钱'%(money))
class alipay(Payment):
def pay(self,money):
print('使用支付宝付了%s的钱'%(money))
def pay(pay_obj,money):
pay_obj.pay(money)
wechat = wechatpay()
ali = alipay()
pay(wechat,200)
pay(ali,300)
3.现在想加一个applepay的支付方式,如果代码不规范类里面的方法不是pay(),这样再直接调用我们定义的pay()是不是就会直接出问题。
class wechatpay(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)
apple = applepay()
pay(apple,300)
上面的代码就会直接报错 因为Applepay里面没有定义pay()方法,如果是一个新来的人没有接触过以前的代码他是不会知道到的,所以我们可以定义一个父类来进行继承,当写的子类中没有要定义的方法,就报一个固定的错误来进行提醒,看下面的代码
class Payment:
def pay(self,money):
raise NotImplemented
class wechatpay(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))
apple = applepay()
pay(apple,300)
3.python中的接口类的单继承来进行代码规范
from abc import abstractmethod,ABCMeta
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self,money):pass
class Wechat(Payment):
def pay(self,money):
print('已经用微信支付了%s元'%money)
class Alipay(Payment):
def pay(self,money):
print('已经用支付宝支付了%s元' % money)
class Applepay(Payment):
def pay(self,money):
print('已经用applepay支付了%s元' % money)
def pay(pay_obj,money):
pay_obj.pay(money)
app = Applepay()
p = Payment()