Day04 面向对象编程基础
学习目标
- 描述对象和类
- 定义带数据域和方法的类
- 使用构造方法调用初始化来创建和初始化数据域以构建一个对象
- 使用self参数引用对象本身
面向对象思想有三大要素:封装、继承和多态
为了简化程序的设计,我们引入了函数的概念,把相对独立且经常重复使用的代码放置到函数中,在需要使用这些功能的时候只要调用函数即可;如果一个函数的功能过于复杂和臃肿,我们又可以进一步将函数继续切分为子函数来降低系统的复杂性。
类和对象
类和对象
简单的说,类是对象的蓝图和模板,而对象是类的实例。这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的东西。在面向对象编程的世界中,一切皆为对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类(型)。当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定义出一个叫做“类”的东西。
为对象定义类
关键点:类定义对象的特征和行为
- 一个对象的特性就像人的身份证号码,Python会在运行时自动对每一个对象赋予一个独特的id来辨识这个对象
- 一个对象的特征和属性是用变量表示的,被称之为数据域
- 方法也被称为函数,通过调用对象上的方法可以让对象完成某个动作,python使用方法来定义一个对象的行为
- 对象就是累的一个实例
定义类
在Python中可以使用class关键字定义类,然后在类中通过之前学习过的函数来定义方法,这样就可以将对象的动态特征描述出来
以上实例定义了一个类,类名通常实在关键词class后,其后紧随一个冒号(:),初始化程序总是被命名为 _ _ init _ _,这个方法被称为初始化程序,它是在创建和初始化这个新对象时被调用的。
下面示例一个小程序
#打印进度条
import time
class Zcz(object):
def __init__(self):
self.count = 1
def jindutiao(self):
for i in range(0,100):
time.sleep(0.1)
if i % 5 == 0:
res = '#'*self.count
print('%s %d%%'%(res,(i+5)))
self.count += 1
if __name__ == '__main__':
zcz = Zcz()
zcz.jindutiao()
构造对象完成两个任务:
- 在内存中为类创建一个对象
- 调用类的 _ _ init _ _方法来初始化对象
构造方法的语法规则是:类名(参数)
访问可见性问题
对象成员是指它的数据域和方法。数据域也被称为实例变量,因为每个对象(实例)的数据域都有一个特定值。方法也被称为实