python面向对象类型_python面向对象(类的多态,鸭子类型)

一. 接口类

接口类不能被实例化

在python里没有接口类这种数据类型,没有接口类专门的语法

但是 可以通过继承abc模块实现接口的功能

from abc importABCMeta,abstractmethodclass Payment(metaclass=ABCMeta): #接口类

@abstractmethoddefpay(self,money):pass

class Wechatpay(Payment): #根据接口类的规范编程

defpay(self,money):print('微信支付了%s元'%money)

p=Wechatpay()

p.pay(6)

二. 接口隔离原则

ContractedBlock.gif

ExpandedBlockStart.gif

from abc importABCMeta,abstractmethodclass FlyAnimal(metaclass=ABCMeta):

@abstractmethoddeffly(self):print(11111)class SwimAnimal(metaclass=ABCMeta):

@abstractmethoddef swim(self): pass

class WalkAnimal(metaclass=ABCMeta):

@abstractmethoddef walk(self): pass

classSwan(SwimAnimal,WalkAnimal,FlyAnimal):#飞

def fly(self):pass

#游泳

def swim(self):pass

#走

def walk(self):pass

classQq(SwimAnimal,WalkAnimal):def swim(self):pass

#走

def walk(self):pass

classBird(FlyAnimal,WalkAnimal):#飞

def fly(self):pass

#走

def walk(self):passSwan()

接口隔离原则

三. 抽象类

抽象类 规范一个类的类

在python里 抽象类和接口类 没区别

在java里 有区别

java的接口规定里面的方法一定不能实现(一句代码也不能写)

抽象类 单继承

无论接口类 还是抽象类 其实都是一种面向对象编程的开发规范

只是在接口类或者抽象类中 去约束继承它的子类必须实现某些方法

对于java代码来说:如果发生多继承(类似上面接口隔离原则) 那么一定是接口类 且里面的方法都不能实现

如果在方法里有了实现 那么一定是单继承 的抽象类

但是对于python来说 就没有这些约束

因为python没有接口的概念

对于类的继承 没有多继承的限制

实际上abc模块是帮我实现抽象类的方法,只是我们用它来模仿接口类的效果了

在python中,只要metaclass = ABCMeta 定义了抽象方法(@abctractmethod)

这个类就不能被实例化

你可以说他是一个抽象类

四. 多态

python是自带多态的

例如:上面的接口隔离原则就是多态

python崇尚鸭子类型

如:字符串,列表,元组,都是序列类型,但他们直接没有直接的继承关系

ContractedBlock.gif

ExpandedBlockStart.gif

classList:defindex(self):pass

defslice(self):pass

deflen(self):pass

defappend(self):pass

classTuple:defindex(self):pass

defslice(self):pass

deflen(self):pass

classStr:defindex(self):pass

defslice(self):pass

deflen(self):pass

defsplit(self):pass

鸭子类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用 JavaScript 编写的杀死幽灵游戏(附源代码) 杀死鬼魂游戏是使用 Vanilla JavaScript、CSS 和 HTML 画布开发的简单项目。这款游戏很有趣。玩家必须触摸/杀死游荡的鬼魂才能得分。您必须将鼠标悬停在鬼魂上 - 尽量得分。鬼魂在眨眼间不断从一个地方移动到另一个地方。您必须在 1 分钟内尽可能多地杀死鬼魂。 游戏制作 这个游戏项目只是用 HTML 画布、CSS 和 JavaScript 编写的。说到这个游戏的特点,用户必须触摸/杀死游荡的幽灵才能得分。游戏会根据你杀死的幽灵数量来记录你的总分。你必须将鼠标悬停在幽灵上——尽量得分。你必须在 1 分钟内尽可能多地杀死幽灵。游戏还会显示最高排名分数,如果你成功击败它,该分数会在游戏结束屏幕上更新。 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox。要玩游戏,首先,单击 index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值