Python课件PPT:第7章 对象与类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章 对象与类
本章内容
7.1 理解面向对象程序设计 7.2 类的定义 7.3 类的构造方法和内置属性 7.4 类实例 7.5 类的内置方法 7.6 重载运算符 7.7 类的继承 7.8 类的多态 7.10 类的封装 7.11 Python的垃圾回收机制
7.1 理解面向对象程序设计
7.3 类的构造方法和内置属性
所谓构造方法(constructor)就是创建对象时, 对象本身所运行的函数。Python使用 __init__()函数作为对象的构造方法。当用户 要在对象内指向对象本身时,可以使用self 关键字。Python的self关键字与C++的this 关键字一样,都是代表对象本身。
7.2 类的定义
类是一个用户定义类型,与其他大多数的计 算机语言一样,Python使用关键字class来 定义类。语法格式如下:
class <ClassName>: '类的帮助信息' #类文档字符串 class_suite #类体 其中,ClassName为类的名称;类的帮助
信 息 可 以 通 过 ClassName.__doc__ 查 看 ; class_suite 由类成员,方法,数据属性组成。
由于使用动态数据类型,Python必须等到运行该函数 时才知道该函数的类型。这种特性称为运行期绑定 (runtime binding)。
C++将多态(polymorphism)称为方法重载(method overloading),C++可以允许类内有许多个相同的名 称、却有不同参数的函数存在。
7.9 类的封装
过封装的数据能够确保信息的隐密性。 ⑵ 继承(inheritance):通过继承的特性,衍生类(derived class)
继承了其基础类(base class)的成员变量(data member)与类方法 (class method)。衍生类也叫做次类(subclass),或是子类(child class)。基础类也叫做父类(parent class)。 ⑶ 多态(polymorphism):多态允许一个函数,有许多种不同的接 口。依照调用函数时使用的参数,类知道使用哪一种接口。 Python使用动态类型(dynamic typing),与后期绑定(late binding)来做到多态的功能。
派生类的语法如下所示:
class <类名称> [(基类1,基类2, ...)]:
[“文件字符串”]
<语句>
一个衍生类可以同时继承自许多个基类,基类之间以逗号(,)隔开。
7.8 类的多态
所谓类的多态(polymorphism),就是类可以有许多个 相同名称,但参数类型不同的函数。Python并没有明 显的多态特性,因为Python函数的参数不必声明数据 类型。但是利用动态数据类型(dynamic typing), Python仍然可以处理对象的多态。
7.6 重载运算符
上一节讲述的类的内置方法中,有许多是用 来替换运算符的功能,这种特性称为重载运 算符(overloading operator)。例如:
⑴ __add__(a, b)方法等于a + b。 ⑵ __sub__(a, b)方法等于a – b。 ⑶ __mul__(a, b)方法等于a * b。 ⑷ __ mod__(a, b)方法等于a % b
7.7 类的继承
所谓类的继承(inheritance),就是新类继承旧类的属性与方法,这种行为 称为派生子类(subclassing)。继承的新类称为派生类(derived class),被 继承的旧类则称为基类(base class)。当用户创建派生类后,就可以在派 生类内新增或是改写基类的任何方法。
人们将对象的静态特征抽象为属性,用数据来描述,在 Python语言中称之为变量,将对象的动态特征抽象为 行为,用一组代码来表示,完成对数据的操作,在 Python语言中称之为方法(method)。一个对象由 一组属性和一系列对属性进行操作的方法构成。
7.1.2 面向对象的特征
下列是面向对象程序的主要特性: ⑴ 封装(encapsulation):数据仅能通过一组接口函数来存取,经
对象的方式存储。__dict__属性为此字典对 象的值。 ⑵ obj.__class__:__class__属性返回创建此 类实例所用的类名称。
7.5 类的内置方法
类本身有许多的内置方法,这些内置方法的开头与结尾 都是双底线字符。
⑴ __init__(self):这是类的构造方法,当创建一个类的 实例时,就会调用此方法。
所谓类的封装(encapsulation),就是类将其属 性(变量与方法)封装在该类内。只有该类中的 成员,可以使用到该类中的其他成员。这种被 封装的变量与方法,称为该类的私有变量 (private variable)与私有方法(private method)。
Python类中的所有变量与方法,都是公用的 (public)。只要知道该类的名称,与该变量或是 方法的名称,任何外部的对象都可以直接存取 类中的属性与方法。
7.1.1 什么是对象 7.1.2 面向对象的特征 7.1.3 什么是类
பைடு நூலகம்
7.1.1 什么是对象
对象是类的实例化。对象的特征分为静态特征和动态特 征两种。静态特征指对象的外观、性质、属性等。动态 特征指对象具有的功能、行为等。客观事物是错综复杂 的,但人们总是从某一目的出发,运用抽象分析的能力 ,从众多的特征中抽取最具代表性、最能反映对象本质 的若干特征加以详细研究。
⑵ __str__(self):此方法被内置函数str()与print函数调 用。用来设置对象以字符串类型出现时如何显示, __str__()函数的返回值是一个字符串对象。
⑶ __repr__(self):此方法被repr()内置函数调用,此函 数可以让对象以可读的形式出现。
⑷ __getattr__(self, name):此方法用在读取或是修改 不存在的成员属性的时候。
7.4 类实例
7.4.1 创建类实例 7.4.2 类实例的内置属性
7.4.1 创建类实例
要创建一个类实例时,只要指定变量给类名 称即可。例如:
>>>f = Fruit() f即是一个类实例变量,注意类名称之后
须加上小括号。
7.4.2 类实例的内置属性
所有Python的类实例,都具有下列属性: ⑴ obj.__dict__:类实例内的属性是以字典
7.1.3 什么是类
类是一个抽象的概念,要利用类的方式来解决 问题,必须用类创建一个实例化的对象,然后 通过对象去访问类的成员变量,去调用类的成 员方法来实现程序的功能。就如同“手机”本 身是一个抽象的概念,只有使用了一个具体的 手机,才能感受到手机的功能。
类(class)的定义是使用封装的数据,以及操作 这些数据的接口函数,所组成的一群对象的集 合。类可以说是,创建对象时所用的模板 (template)。
7.10 Python的垃圾回收机制
Python使用了引用计数这一简单技术来跟 踪和回收垃圾。在Python内部,有一个内 部跟踪变量,记录着所有使用中的对象各有 多少引用,称为一个引用计数器。
当对象被创建时,就创建了一个引用计数, 当这个对象不再需要时,这个对象的引用计 数变为0时,它被垃圾回收。但是回收不是" 立即"的,由解释器在适当的时机,将垃圾 对象占用的内存空间回收。
本章内容
7.1 理解面向对象程序设计 7.2 类的定义 7.3 类的构造方法和内置属性 7.4 类实例 7.5 类的内置方法 7.6 重载运算符 7.7 类的继承 7.8 类的多态 7.10 类的封装 7.11 Python的垃圾回收机制
7.1 理解面向对象程序设计
7.3 类的构造方法和内置属性
所谓构造方法(constructor)就是创建对象时, 对象本身所运行的函数。Python使用 __init__()函数作为对象的构造方法。当用户 要在对象内指向对象本身时,可以使用self 关键字。Python的self关键字与C++的this 关键字一样,都是代表对象本身。
7.2 类的定义
类是一个用户定义类型,与其他大多数的计 算机语言一样,Python使用关键字class来 定义类。语法格式如下:
class <ClassName>: '类的帮助信息' #类文档字符串 class_suite #类体 其中,ClassName为类的名称;类的帮助
信 息 可 以 通 过 ClassName.__doc__ 查 看 ; class_suite 由类成员,方法,数据属性组成。
由于使用动态数据类型,Python必须等到运行该函数 时才知道该函数的类型。这种特性称为运行期绑定 (runtime binding)。
C++将多态(polymorphism)称为方法重载(method overloading),C++可以允许类内有许多个相同的名 称、却有不同参数的函数存在。
7.9 类的封装
过封装的数据能够确保信息的隐密性。 ⑵ 继承(inheritance):通过继承的特性,衍生类(derived class)
继承了其基础类(base class)的成员变量(data member)与类方法 (class method)。衍生类也叫做次类(subclass),或是子类(child class)。基础类也叫做父类(parent class)。 ⑶ 多态(polymorphism):多态允许一个函数,有许多种不同的接 口。依照调用函数时使用的参数,类知道使用哪一种接口。 Python使用动态类型(dynamic typing),与后期绑定(late binding)来做到多态的功能。
派生类的语法如下所示:
class <类名称> [(基类1,基类2, ...)]:
[“文件字符串”]
<语句>
一个衍生类可以同时继承自许多个基类,基类之间以逗号(,)隔开。
7.8 类的多态
所谓类的多态(polymorphism),就是类可以有许多个 相同名称,但参数类型不同的函数。Python并没有明 显的多态特性,因为Python函数的参数不必声明数据 类型。但是利用动态数据类型(dynamic typing), Python仍然可以处理对象的多态。
7.6 重载运算符
上一节讲述的类的内置方法中,有许多是用 来替换运算符的功能,这种特性称为重载运 算符(overloading operator)。例如:
⑴ __add__(a, b)方法等于a + b。 ⑵ __sub__(a, b)方法等于a – b。 ⑶ __mul__(a, b)方法等于a * b。 ⑷ __ mod__(a, b)方法等于a % b
7.7 类的继承
所谓类的继承(inheritance),就是新类继承旧类的属性与方法,这种行为 称为派生子类(subclassing)。继承的新类称为派生类(derived class),被 继承的旧类则称为基类(base class)。当用户创建派生类后,就可以在派 生类内新增或是改写基类的任何方法。
人们将对象的静态特征抽象为属性,用数据来描述,在 Python语言中称之为变量,将对象的动态特征抽象为 行为,用一组代码来表示,完成对数据的操作,在 Python语言中称之为方法(method)。一个对象由 一组属性和一系列对属性进行操作的方法构成。
7.1.2 面向对象的特征
下列是面向对象程序的主要特性: ⑴ 封装(encapsulation):数据仅能通过一组接口函数来存取,经
对象的方式存储。__dict__属性为此字典对 象的值。 ⑵ obj.__class__:__class__属性返回创建此 类实例所用的类名称。
7.5 类的内置方法
类本身有许多的内置方法,这些内置方法的开头与结尾 都是双底线字符。
⑴ __init__(self):这是类的构造方法,当创建一个类的 实例时,就会调用此方法。
所谓类的封装(encapsulation),就是类将其属 性(变量与方法)封装在该类内。只有该类中的 成员,可以使用到该类中的其他成员。这种被 封装的变量与方法,称为该类的私有变量 (private variable)与私有方法(private method)。
Python类中的所有变量与方法,都是公用的 (public)。只要知道该类的名称,与该变量或是 方法的名称,任何外部的对象都可以直接存取 类中的属性与方法。
7.1.1 什么是对象 7.1.2 面向对象的特征 7.1.3 什么是类
பைடு நூலகம்
7.1.1 什么是对象
对象是类的实例化。对象的特征分为静态特征和动态特 征两种。静态特征指对象的外观、性质、属性等。动态 特征指对象具有的功能、行为等。客观事物是错综复杂 的,但人们总是从某一目的出发,运用抽象分析的能力 ,从众多的特征中抽取最具代表性、最能反映对象本质 的若干特征加以详细研究。
⑵ __str__(self):此方法被内置函数str()与print函数调 用。用来设置对象以字符串类型出现时如何显示, __str__()函数的返回值是一个字符串对象。
⑶ __repr__(self):此方法被repr()内置函数调用,此函 数可以让对象以可读的形式出现。
⑷ __getattr__(self, name):此方法用在读取或是修改 不存在的成员属性的时候。
7.4 类实例
7.4.1 创建类实例 7.4.2 类实例的内置属性
7.4.1 创建类实例
要创建一个类实例时,只要指定变量给类名 称即可。例如:
>>>f = Fruit() f即是一个类实例变量,注意类名称之后
须加上小括号。
7.4.2 类实例的内置属性
所有Python的类实例,都具有下列属性: ⑴ obj.__dict__:类实例内的属性是以字典
7.1.3 什么是类
类是一个抽象的概念,要利用类的方式来解决 问题,必须用类创建一个实例化的对象,然后 通过对象去访问类的成员变量,去调用类的成 员方法来实现程序的功能。就如同“手机”本 身是一个抽象的概念,只有使用了一个具体的 手机,才能感受到手机的功能。
类(class)的定义是使用封装的数据,以及操作 这些数据的接口函数,所组成的一群对象的集 合。类可以说是,创建对象时所用的模板 (template)。
7.10 Python的垃圾回收机制
Python使用了引用计数这一简单技术来跟 踪和回收垃圾。在Python内部,有一个内 部跟踪变量,记录着所有使用中的对象各有 多少引用,称为一个引用计数器。
当对象被创建时,就创建了一个引用计数, 当这个对象不再需要时,这个对象的引用计 数变为0时,它被垃圾回收。但是回收不是" 立即"的,由解释器在适当的时机,将垃圾 对象占用的内存空间回收。