第6章 面向对象程序设计图文模板

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

>>> isinstance(car,
Car)
True
>>> isinstance(car,
tuple)
2020/11/1 False
5
6.1.2 构造方法
➢ 类中的函数称为该类的方法,其中__ini()__,开头和结尾 各有一对下划线,称为构造方法,在实例化类的时候被自动 调用。
>>> class Car: def __init__(self, color, model): print('The color is %s and the model is %s'
2020/11/1
20
6.2.3 访问控制
➢ Python中一般的成员变量和成员方法都是公有成员,没有 特殊的访问限制,可以直接用实例对象名加圆点运算符的形 式对成员进行引用。
➢ Python采取变量名称约定的方式实现访问控制,类的成员 一般为公有成员,如果名称的首部有下划线,就会改变其访 问限制属性。
10
6.1.3 实例成员
>>> a = Car('red', 'audi') >>> a.getInfo()
The color is red and the model is audi, the
name is
>>> print(a.color)
red
>>> print(a.model)
audi
>>> a.setName('Babi')
%(color, model))
def getInfo(self): print('This is a car')
>>> a = Car('red', 'audi')
The color is red and the model is audi
2020/11/1
6
6.1.3 实例成员
➢ 一个实例化对象的成员是指它的数据和方法。 ➢ 实例的数据保存在该实例的成员变量中,用于表示该实例
2020/11/1
9
【例6-1】定义和使用一个汽车类
class Car:
def __init__(self, color, model):
self.color = color
self.setModel(model)
self.name = ''
def getInfo(self):
msg = 'The color is '+self.color+' and the
2020/11/1
8
6.1.3 实例成员
➢ 在实例方法中定义的实例变量,在定义时以self作为前缀。 实例变量具有以下性质: • 实例变量在类的实例方法中定义,定义时以“self.实例 变量名”的形式。 • 实例变量可以在类的实例化对象中进行访问,访问时的形 式为“对象名.实例变量名”。 • 实例变量可以在其所在类的实例方法中进行访问,但必须 保证访问之前已经对该实例变量进行。 • 初值的设定,一般应在构造方法中初始化各种实例变量。
➢ 另一种是在实例方法中定义的成员属性,在定义时以self 作为前缀,即实例变量,一般要求在类的实例对象中引用。
>>> class Student:
course = ''
def __init__(self, name, age):
self.name = name
self.age =
age
>>> a = Student('Zhang', 20)
实例方法的第一个参数为self,可以引用类的实例变量, 但它不能引用类变量。要实现对类变量的引用,就需要采 用类方法。
2020/11/1
15
6.2.2 类的方法成员
2. 类方法 类本身的方法就是类方法。类方法不对特定实例进行操 作,在类方法中也不能访问实例变量。 类方法通过修饰符@classmethod来定义,方法的第一个 形式参数一般需要设置为cls。
的属性。 ➢ 对于一个实例化对象,可以使用圆点运算符“.”来使用其
成员变量和成员方法,又称对象访问,使用形式为“对象名. 实例成员”。
2020/11/1
7
6.1.3 实例成员
➢ getInfo(self)方法就是一个实例方法,实例方法具有如下 性质: 实例方法在定义时一般将self作为第一个输入参数。 实例方法可以在该类的其它实例方法中调用,具体方法 为“self.实例方法名(参数)”。 实例方法可以在类的实例化对象中进行访问,具体形式 为“对象名.实例方法名(参数)”。
>>> a.color = 'blue'
>>> a.model = 'bmw'
>>> a.getInfo()
The color is blue and the model is bmw, the
202n0a/m1e1/i1s Babi
11
6.2 封装
➢ 封装(Encapsulation)是面向对象的主要特征,是把客观 事物抽象并封装成对象,将数据成员、方法等集合在一个整 体内。
而对象则是实例化和具体化的类。
2020/11/1
3
6.1.1 创建类和对象
➢ 定义一个类: Python使用class关键字来定义类,class关键字之后是 一个空格,然后是类的名字,再然后是一个冒号,最后换 行并定义类的内部实现。
类名首字母一般采取大写的方式,但也可根据需要自行 设定命名规范。
2020/11/1
21
6.2.3 访问控制
Python中一般的成员变量和成员方法都是 公有成员,没有特殊的访问限制,可以直接用实 例对象名加圆点运算符的形式对成员进行引用。
以单下划线开始的成员为保护成员,形 式如_var,只有类实例和子类实例能访问到这些 成员,不能用‘from module import *’导入的 方式来访问。
model is '+self.model
msg += ', the name is '+self.name
print(msg)
def setPrice(self):
pass
def setName(self, name):
self.name = name
2020/11/d1ef
setModel(self, model): self.model = model
➢ 完成封装的对象,可以实现信息的隐藏,只允许可信的对 象访问和操作隐藏的内部数据,而其公有数据则不受这种限 制。
➢ 采用封装思想所建立的类实现了数据和方法的统一管理, 使用者无需关心方法在类内部的具体实现,只需要直接使用 类的方法。
2020/11/1
12
6.2.1 类的数据成员
➢ 类的数据成员是类固有的特征,代表了一类对象的公共性 质。
➢ 类的数据成员根据其特点可以分为两种,一种是为类建立 的数据成员,它是在所有方法之外所定义的属性,即类属性, 从变量的角度看这种变量叫做类变量。
➢ 类变量属于整个类,不是某个实例的一部分,而是所有实 例之间共享的公共属性。对类变量的引用一般采用“类名.类 变量名”的方式。
2020/11/1
13
6.2.1 类的数据成员
>>> class Car: def getInfo(self): print('This is a
car')
2020/11/1
4
6.1.1 创建类和对象
➢ 实例化对象
在类名后添加一个括号用于实例化该类。
通过“对象名.成员”的方式来访问其中的成员属性或成 员方法。
>>> car = Car() >>> car.getInfo() This is a car
2020/11/1
18
【例6-2】定义和使用一个学生类
class Student: course = ''
def __init__(self, name, age): self.name = name self.age = age
@classmethod
# 类方法
def showCourse(cls):
a = Student('Zhang', 20)
The course is math
b = Student('Wang', 21)
5.0 5.0
Student.course = 'math'
2.0
a.showCourse()
print(a.getAverage(60, 70, 80))
a.test()
@classmethod def showCour百度文库e(cls):
print('The course is ', cls.course)
2020/11/1
16
6.2.2 类的方法成员
类方法一般需要类名来访问,也可以通过对象实例来调 用。
>>> a = Student('Zhang', 20) >>> Student.course = 'math' >>> a.showCourse() The course is math >>> Student.showCourse() The course is math
return False self.__money -= cost return True
2020/11/1
24
【例6-3】定义和使用一个人员类
>>> a = Person(name='张三', age=20) >>> a.introduce() 我的名字张三, 年龄20 >>> a._career = '会计' >>> a.setMoney(100) >>> print(a._career) 会计 >>> a._buy(5) 完成购买 >>> print(a.getMoney()) 95
>>> b = Student('Wang', 21)
>>> Student.course= 'math'
>>> print(a.name, a.age,
Student.course)
2020/11/1 Zhang 20 math
14
6.2.2 类的方法成员
➢ 类的方法成员包括实例方法、类方法和静态方法三种类型。 1. 实例方法
2020/11/1
17
6.2.2 类的方法成员
3. 静态方法 Python允许在类中声明与类的对象实例无关的方法, 称为静态方法。 静态方法只是名义上归属类管理,并不能使用类变量和 实例变量。 在声明时,静态方法需要采用修饰符@staticmethod加以 说明。 静态方法一般采用类名来引用,也可以利用实例对象名 来引用静态方法。
def _buy(self, cost): if (self.__evaluate(cost)):
年龄
2020/11/1
23
【例6-3】定义和使用一个人员类
print('完成购买') return
print('无法购买')
def __evaluate(self, cost):
if (cost>self.__money):
以双下划线开始的成员是私有成员,形式 如__var,意思是只能在类内部的方法中使用,即 便是子类的方法也不能访问到这个成员。
2020/11/1
22
【例6-3】定义和使用一个人员类
class Person: def __init__(self, name, age): self.name = name self.age = age self._career = '' self.__money = 0
def introduce(self): {}".fodremfatgrp(eersttieMunlortfnn(.e"nsya(emsl我efe,l._fs)_的e:mlofn.名eayge)字) {},
def setMoney(self, money): self.__money = money
print('The course is', cls.course)
print(cls.getAverage(4,5,6),
Student.getAverage(4,5,6))
def setScore(self, score):
2020/11/1 self.score = score
19
【例6-2】定义和使用一个学生类
《大数据的Python基础》
第6章 面向对象程序设计
学习目标
掌握类与对象编程方法 了解类中各类数据成员和方法成员的使用 掌握继承和多态 了解常用特殊方法
2020/11/1
2
6.1 类与对象
➢ 对象(Object)表示现实世界中的特定实体 ➢ 类是Python语言的核心,在Python中各种数据类型都是类,
def test(self):
print('In test():', Studen程t.序co的ur运se行) 结果如下:
Student.showCourse()
The course is math
print(Student.getAverage(15,.20,35).)0 70.0
In test(): math
相关文档
最新文档