博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python面向对象关系
阅读量:6975 次
发布时间:2019-06-27

本文共 1377 字,大约阅读时间需要 4 分钟。

首先了解一下Python面向对象中类型-实例父类-子类的关系。下面的一些规则很有用。

当我们介绍许多不同的对象时,我们只用了两种关系(图4.1 关系):

  • 是一类(is a kind of)(实线):面向对象里叫做特殊化(specialization),这种关系是说对于两个对象,一个对象(子类)是另一个(父类)的特殊版本。蛇是爬行动物的一类,它有爬行动物的全部特征,也有称其为蛇的特殊的特征。

用到的术语:subclass ofsuperclass ofsuperclass-subclass

  • 是一个实例(is an instance of)(虚线):即实例化。这种关系是说一个对象(实例)是由另一个对象(类型)限定的一个具体的例子。我有个宠物蛇名叫Squasher, Squasher就是蛇的一个实例。

用到的术语: instance oftype oftype-instanceclass-instance

注意在日常会话中,是一个对上述两种关系都适用。Squasher是一条蛇, 蛇是一个爬行动物。不过在此我们用特定的术语来避免混淆。

图4.1关系

我们对第一种关系使用实线是因为相对于第二种关系它们之间更靠近。举个例子——如果有人被要求列举一个类似于’蛇’的单词,这个人可能会回答’爬行动物’。然而,如果要列举一个类似于’Squasher’的单词,则就不那么可能会说出’蛇’了。

在这里给出两条很有用的关系属性:

虚线向上规则(Dashed Arrow Up Rule)如果X是A的实例,且A是B的子类,则X也是B的实例。虚线向下规则(Dashed Arrow Down Rule)如果B是M的实例,且A是B的子类,则A也是B的实例。

换句话说,虚线箭头一端可以向上移动到实线箭头,虚线箭尾可以向下移(分别如图4.2 关系的传递性中的2a和2b所示)。这些属性可以从父类-子类关系的定义得出。

图4.2 关系的传递性

 

运用虚线向上规则,我们可以从下述第一条陈述得到第二条:

  1. Squasher是蛇的实例(或者说,Squasher的类型是蛇)。

  2. Squasher是爬行动物的实例(或者说,Squasher的类型是爬行动物)。

先前我们说过一个对象有确定的一个类型。那Squasher怎么会有两个?注意虽然两条陈述都正确,但一条更加正确(事实上包含另一条)。也就是说:

Squasher.__class__是蛇(Python中,__class__属性指向对象的类型)。isinstance(Squasher, 蛇)和isinstance(Squasher, 爬行动物)都为真。

对于父类-子类关系存在一条相似的规则。

实线结合规则(Combine Solid Arrows Rule)如果A是B的子类,且B是C的子类,则A也是C的子类。

蛇是一类爬行动物,爬行动物是一类动物,因此蛇是一类动物。或者用Python的方式说:

蛇.__bases__是(爬行动物,)(__bases__属性指向一个包含对象父类的元组)issubclass(蛇, 爬行动物)和issubclass(蛇, 动物)都为真。

注意一个对象可能有多个基类。

转载于:https://www.cnblogs.com/stemon/p/4994258.html

你可能感兴趣的文章
UITouch 点击事件
查看>>
mongodb shell 操作
查看>>
Android:TabLayout的一些设置
查看>>
汉字拼音带声调和发音mp3文件(C#源程序)
查看>>
qemu:///system 没有连接驱动器可用;读取数据时进入文件终点: 输入/输出错误
查看>>
json xmpp
查看>>
【转载】Node.js + WebSocket 实现的简易聊天室
查看>>
理解MapReduce计算构架
查看>>
移动端资源集锦
查看>>
Java 吸血鬼数字
查看>>
架构设计--用户端全http參数接口具体说明v1
查看>>
Python之日期与时间处理模块(date和datetime)
查看>>
RMAN数据库恢复之丢失数据文件的恢复
查看>>
javabeans 内省 introspector BeanUtils
查看>>
跑马灯效果的TextView之singLine 和maxLines
查看>>
(转载)oracle字符集理解
查看>>
《红黑树》学习心得
查看>>
高斯消元
查看>>
2017年寒假作业(一)
查看>>
Could not find a matching subscription for the message.
查看>>