python 接口类、抽象类、多态

参考https://www.cnblogs.com/Fantac/p/11481114.html

接口类和抽象类总结

在python中没有接口类,但有抽象类;abc模块中的metaclass = ABCMeta,@abstractmethod它的本质是做代码的规范用的,希望子类中能实现父类名字完全一样的方法

接口类和抽象类:

从java的角度上看是有区别的,java本来就支持单继承所以就有了抽象类;java没有多继承,所以为了接口隔离原则,设计了接口这个概念,支持多继承了

而python它既支持单继承也支持多继承,所以对于接口类和抽象类的区别就不会那么明显了,甚至在python中没有内置接口类

多态

多态指的是一类事物有多种形态

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 Apple(Payment):                           #支付方式---苹果支付
    def pay(self,money):
        print(‘已经用了支付宝支付了%s元‘%money)

多态性

就是虽然是一类东西但是它们执行的是相同的方法但是做的是不同的事,比如微信它用的是微信支付、支付宝它用的是支付宝支付、苹果支付它用的是苹果支付...

鸭子类型

python语言里面有一个鸭子类型的概念,而在某些其他的属于强类型语言,用的是多态

鸭子类型:不崇尚根据继承所得来的相似,我只是自己实现我自己的代码就可以了,如果有两个类它们刚好相似,并不产生父类的子类的兄弟关系,那这就是鸭子类型。像list、tuple这种相似,是自己写代码的时候约束的,而不是通过父类约束的

原文地址:https://www.cnblogs.com/wind666/p/11961899.html

时间: 2024-10-14 12:27:21

python 接口类、抽象类、多态的相关文章

python开发面向对象基础:接口类&抽象类&多态&多继承

一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 开发中容易出现的问题 1 class Alipay: 2 ''' 3 支付宝支付 4 ''' 5 def pay(self,money): 6 print('支付宝支付了%s元'%money) 7 8 class Applepay: 9 ''' 1

Python_015(面向对象(接口类,抽象类,多态,封装)

一.抽象类与接口类 1.抽象类:抽象即类似或者说比较像的部分,继承描述的是父类与子类的一种关系,要找出这种关系,必须先抽象再继承; a:抽象分成两个层次: 1)由对象->类:将两个有相似地方的对象抽取成类; 2)由类->父类:将两个有相似地方的类抽取成父类; :抽象最主要的作用就是划分类别(可以隔离关注点,降低复杂度) 2.为什么要有抽象类 与Java一样,Python也有抽象类的概念,需要借助模块实现,它是一个特殊的类,特殊之处在于只能被继承,不能被实例化; 类是从一些对象中抽取相同的内容而

python 2018.7.25 接口类,抽象类

python 没有接口这个概念 接口类,抽象类: 制定一个规范. from abc import ABCMeta,abstractmethodclass Payment(metaclass=ABCMeta): # 抽象类(接口类): @abstractmethod def pay(self): pass # 制定了一个规范 class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): prin

接口类抽象类

接口类(抽象类): 在python中是没有接口类,可以把接口类和抽象类视为同一种定义:制定一个规范举例:收到项目经理的要求,写一个支付: #第一版 class Alipay: def __init__(self,money): self.money = money def pay(self): print('zfb支付了%s' % self.money) class Jd: def __init__(self, money): self.money = money def pay(self):

19 抽象类 接口类 封装. 多态

主要内容: 1.  抽象类(接口类): 制定一个规范  : from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self):pass class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' % self.mon

php中普通类 接口类 抽象类 浅谈

一.普通类 1.关键词:class  类名,继承关键字extends 2.继承:只能实现单继承, 3.多态:子类继承可以实现多种功能 4.封装:类有权限机制,私有的只能自己用,受保护的可以被继承,子类的权限必须大于等于父类 5.实例化:可以被实例化 二.接口类 1.关键词 :interface  类名   ,继承关键字 implements 2.继承:可以实现多继承,父类有的方法属性,子类必须有,类可以实现多个接口,用逗号来分隔多个接口的名称 3.多态:同样具有多态性 4.封装:所有的方法,属性

Python 【类的多态】

一.多态 #类的多态 class Animal(object): #Animal类继承object def __init__(self,color): self.color = color def eat(self): print("动物在吃!") def run(self): print("动物在跑") class Cat(Animal): #Cat继承Aninal 继承[属性和方法] def eat(self): #方法重名 print("猫仔!&qu

python(7)–类的多态实现

第一步: 先定义三个类: class Animal: def __init__(self, name): self.name = name #这个方法的意思是,如果继承该类,就得自己写talk方法,如果不写,就抛出异常 def talk(self): raise NotImplementedError("subclass must implement abstract method") class Cat(Animal): def talk(self): return "Me

接口与抽象类 、多态

接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 接口主要是java等语言中的概念,python中并没有明确的限定 from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def