Python接口类规范过程

接口和抽象的作用:用来规范子类的撰写。

from abc import abstractclassmethod,ABCMeta

'''
#接口类:默认多继承,接口类中所有的方法都必须不实现。是从JAVA中演化过来的。如果你非要在方法里面写也是可以的,只是一般不建议写。
#抽象类:不支持多继承,抽象类中方法可以有一些代码的实现 ,也是从JAVA中有的概念。如果你不能理解这两种类,你就理解成一种。他们的作用就是为了规范子类
'''
class payment(metaclass=ABCMeta):

    @abstractclassmethod
    def pay(self,money):
        pass

class Apliba(payment):
    def pay(self,money):
        print('用支付宝支付的%s'%money)
class WeiXin(payment):
    def pay(self,money):
        print('用微信支付的%s'%money)

class appleZhifu(payment):
    def zhifu(self,money):
        print('用苹果支付的%s'%money)

def pay(pay_obj,money):
    pay_obj.pay(money)

pay(WeiXin(),100)
pay(appleZhifu(),100)

执行结果:

"D:\Program Files\Python\python.exe" F:/Users/Administrator/PycharmProjects/SchoolManagerSys/core/Study.py
Traceback (most recent call last):
用微信支付的100
  File "F:/Users/Administrator/PycharmProjects/SchoolManagerSys/core/Study.py", line 28, in <module>
    pay(appleZhifu(),100)
TypeError: Can't instantiate abstract class appleZhifu with abstract methods pay

Process finished with exit code 1
这里的TypeError: Can't instantiate abstract class appleZhifu with abstract methods pay。可以直观地看出来本应该写pay方法的,但程序员错写成了appleZhifu。

猜你喜欢

转载自www.cnblogs.com/hisweety/p/10286207.html