[关闭]
@songying 2018-06-27T11:53:58.000000Z 字数 1230 阅读 1021

python 面向对象

python


什么是面向对象?

面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

数据封装、继承和多态是面向对象的三大特点

类与实例

类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

类定义

  1. class Example(object):
  2. def __init__(self, 参数列表):

self的意义

self代表类的实例,代表当前对象的地址,而非类。类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

  1. self.__class__ # 指向类

类的方法

在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数。

数据封装

封装的好处在于:将数据和逻辑被“封装”起来了,调用很容易,但却不用知道内部实现的细节。可以保证随意修改。

访问控制

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线,在Python中,实例的变量名如果以开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。

这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。

如果代码要获取参数的值,我们只需要在类中添加 get_***方法即可。
如果要允许外部代码修改类中的参数,我们只需要在类中添加set_***方法。这样的好处在于,在方法中,我们可以对参数进行检查,避免传入无效的参数。

继承

python中支持多继承

  1. class DerivedClassName(BaseClassName1, BaseClassName1, ...):

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

方法重写

直接在子类中重新定义实现即可。

类的专有方法

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注