首页 > 其他 > 详细

多态和规范

时间:2019-04-28 15:19:02      阅读:103      评论:0      收藏:0      [点我收藏+]

python规范(接口类)

接口类可以规范代码,但接口类本身是不实现的

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!