第二十六章 OOP:宏伟蓝图

本文深入探讨了Python中的面向对象编程(OOP),包括为何使用类、属性继承搜索、类与实例的区别、方法调用的机制以及运算符重载。通过继承,可以实现代码复用和定制;类和实例分别作为对象工厂和具体元素,拥有各自的命名空间;运算符重载允许自定义对象对内置运算符的响应。文章还详细介绍了构造函数__init__在实例化过程中的作用。
摘要由CSDN通过智能技术生成

为何使用类

从以下两大方面来看OOP非常有用:

  • 继承:对于一些通用属性只需要将通用属性代码实现一次,就能让未来我们所创建的所有种类的机器人都可以重用;
  • 组合:每一个组件都可以写成类,并定义自己的行为及关系;

类的三个独特之处:

  • 多重实例:
    类本质上是产生对象的工厂,每当我们调用一个类的时候,就会产生一个独立的命名空间的新对象。每个由类产生的对象都能读取类的属性,并且获得自己的命名空间来存储数据,这些数据是属于每个对象本身的。
  • 通过继承进行定制:
    一般来说,类可以建立命名空间的层次结构,而这种层次结构可以定义该结构中类创建的对象所使用的名称。
  • 运算符重载:
    通过提供特定的协议方法,类可以定义对象来响应在内置类型上的一些运算符。

概览OOP

属性继承搜索

python中OOP的方法调用的表达式:

object.attribute

这一表达式会在python中启动一次搜索,即搜索对象连接的类树,来寻找attribute首次出现的类;

找出attribute首次出现的地方,先搜索object,然后是该对象之上的所有类,由下往上,由左到右;

换句话来说,属性访问就只是搜索树而已。我们称这种搜索为继承,因为树中位置较低的对象继承了树中位置较高的对象所拥有的属性。当从下至上进行搜索时,连接至树中的对象就是树中所有父节点定义的所有属性的并集,直到树的根部。
在这里插入图片描述
需要注意的是,类和通过类产生的实例是两种不同的对象类型:

  • 类:
    类是实例工厂。类的属性提供了行为(数据以及函数),所有从类产生的实例都继承该类的属性(例如,通过时薪和小时数计算员工薪水的函数)。
  • 实例
    代表程序领域中具体的元素。实例的属性记录了每个实例自己的数据(例如,一个员工的社会保险账号)

我们可以按照椭圆形在树中的相对位置再进一步分类。我们通常把树中位置较高的类称为父类( superclass)(比如C2和C3)。树中位置较低的类则称为子类( subclass)(比如C1),这些术语表明了树中的相对位置和角色,父类提供了所有子类共享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值