【Python学习】python学习手册--第二十五章 OOP:宏伟蓝图

面向对象编程

在Python中,每一个可以使用的类型都可以说是一个对象,类是面向对象编程的主要工具。在Python中,类的建立使用了一条语句:class语句。
类其实就是一些变量和函数的包,这些函数是用来处理内置对象或者其它对象类型。类的设计时为了创建和管理新的对象。类可以从抽象的程序层面形象的描述我们现实世界里的事物。
Python中的类有以下几个作用

  • 多重实例。其实Python类就像是对象的工厂,创建一个新的对象就像是按照类的“模板”来刻画出一个新的拥有独立命名空间的新对象。
  • 通过继承进行定制。类也可以进行继承,形成新的更特别的类。
  • 运算符重载:类还可以重新定义运算符的作用,给Python程序带来更多的灵活性。

Python中对象的属性都是通过object.attribute语法来取的属性,简单的说可以概括为以下流程效果:
找出attribute首次出项的地方,先搜索object类,再向上搜索该类继承的所有类,取属性的过程就是查找树的过程,先找到的属性就先取出来,这种子类覆盖父类的效果就是继承,从下至上(继承的顺序,子类在父类下。),从左至右(定义类时括号中声明的父类从左至右的顺序)。

实例和类

类是实例的工厂,实例是通过类创造出来的。在OOP中,实例就像是带有数据的记录,而类是处理这些记录的程序,是“模板、方法”
当我们调用类中方法时,总会隐含着实例对象,方法会在该实例对象的命名空间中起作用(可能是在该对象本身属性上做修改,或者返回某些值。)
从操作角度来说,实例有其它基本的数据,而类有处理这些数据的方法,这些方法使用了实例中的数据。就好比是:如果是调用实例H中的方法A,H.A(value),而实例H又是C类,那么H.A(value)就相当于调用C.A(H)。调用C类中的方法A以处理H对象。

编写类树

对象内变量的调用实际上是“查找树”的过程,我们用class语句和继承语法来构建类与类之间联系:

  • 每次使用class语句都会生成一个新类
  • 调用类时,会生成一个该类的实例
  • 实例自动连接了创建该实例的类
  • 类继承类的方法是,使用class语句时,将父类写在子类头部的括号内(class c3(c1,c2):),从左至右的顺序决定了继承时先后顺序
  • 类中的属性通常是在类的命名空间顶层通过赋值语句添加在类中。
  • 实例中的属性通常是通过类的方法(通常要传递特殊的参数self,相当于java或c++里面的this语句)来赋值的。

Python的面向对象编程也有构造函数,当用该类创建实例时会调用,在python的类中,构造函数定义为__init__,它接收在新建对象时传入的参数以初始化对象。有时也可以省略,就无法在新建对象时传入参数了。

OOP是为了代码重用

面向对象编程是提高代码的重用性,类所提供的代码重用性是其它组件无法比拟的,当需要定制或修改一些新功能时,只需在子类中继承后重新编写同名属性和方法即可,而不是在原有的代码或模块中进行修改。类实际是由函数和变量所构成的,很像模块,但是类所支持属性继承,在类树中查找属性的规则(称之为继承搜索)给了代码更高的重用性和灵活性。
在OOP编程中,你只需要编写自己的需要定制的子类。

小结

继承搜索是先在实例对象中查找属性,然后从创建该实例的类中查找,之后所有的父类中,由类树的底层到顶层,从左至右的顺序(出现在定义类语句头部的括号中的顺序)查找属性,找到第一个符合要求的属性即停止。
类的方法的第一个参数总是很特殊,是self,即它代表了调用改方法的实例对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值