本节内容开始,讲解企业级项目开发基础部分:面向对象;主要从对象的抽象、对象的创建,对象中特殊的方法,面向对象的封装、继承、多态等各个方面来进行讲解。
本节主要内容
- 什么是对象
- 类和对象的概念和区别
- 类的定义
- 对象的初始化
- 对象的使用
- self关键字
1. 关于对象那点事儿
首先,我们先回顾一下关于程序
程序:是用来按照一定的顺序解决问题的
解决问题:解决一个实际问题的核心是处理数据
数据:python中,认为所有的数据都是对象
此时,出现了一个模糊的概念:对象;
那什么是对象呢?
从哲学上说:一切皆对象。
路人甲说:“对象就是看得见摸的着的东西。”
路人乙说:“关于这个东西和对象,有木有更加细致一点的描述呢?”
路人丙说:“对象,就是看得见摸的着的,可能有自己的特征,可能有自己的行为的一种东西。
比如我们都看得见的电脑,电脑有自己的特征<电脑品牌、电脑的尺寸、电脑CPU型号、电脑的硬盘容量等等>,电脑也有自己的行为<播放视频、播放音乐、玩游戏、写文档等等>。
特征是电脑自己静态的属性,一般用名词来表示,行为是电脑的动作,一般用动词来表示。”
大师:对象,就是有自己的特征和行为的,实际存在的一种物体!我们描述对象,就是使用各种数据来描述对象的特征和行为的过程。
2. python中的类和对象
python中的对象,一般分为两种:
- 内置对象
- 自定义对象
python已经提供了大量的内置对象,方便我们的操作,如数字对象、字符串对象、列表对象、字典对象、元组对象、集合对象、等等;但是又说了~内置对象是不是能描述我们项目中用到的所有的数据类型呢?明显这是不可能的,没有任何一门编程语言能内置好这个世界上出现的或者未曾出现的各种对象,所以除了内置对象,我们还需要自定义对象,自定义类型和对象也是我们本章开始说的重点的内容
2.1. 内置对象
python的内置对象,一般都和我们使用的python模块有莫大的关系,官方纯粹的python中就内置了大量的对象
内置对象 | 描述 | 使用方式 |
---|---|---|
数字对象 | 数字在python中就是对象 | 1、3.14 |
字符串对象 | 字符串也是对象 | “hello” |
列表对象 | List | [1,2,3,4,5,6,7] |
元组对象 | tuple | (1,2,3,4,5,6) |
集合对象 | set | {1,2,3,4,5,6,7,8} |
字典对象 | dict | {"name":"jerry", "age":56} |
文件对象 | file | myFile = open("d:/abc.txt") |
其他对象 | 其他使用的模块 | easygui.msgbox("你好") |
2.2. 自定义类型和对象
类:就是一种数据的类型,就是一种类型,简称类。是对一部分具有相同特征(属性)和相似行为(方法)的对象的抽象。
如:人类,就是一种类,人类表示的是人的类型,类型只是一个描述数据的概念,是一个代号,不是实际存在的事物;这个类可以定义人具有的特征和行为,定义特征(姓名、年龄、性别),定义行为(吃饭、睡觉、工作)。
对象:对象就是某个类表示的具体的实际存在的事物了,具有具体数据来描述自己的特征,也有具体的行为操作。
如:张小凡,就是一个具体的人,有自己具体数据描述的特征(姓名:张小凡、年龄:22、性别:男),有自己具体的行为(吃烧鸡、睡大床、工作->砍竹子)
大师:类,就是类型,是一种数据类型,是一部分具有共同特征(属性)和行为(方法)的对象,抽象出来的一个概念、一个代号。
对象,就是类描述的类型中一个具体存在的事物,是一个具有明确特征数据和行为操作的物体。
3. python中定义类和创建对象
定义类的步骤:
- 首先根据我们操作的对象来抽象共同的特征和行为,也称为属性和方法
- 通过python中的class关键字来定义一个类
- 在类中,定义这类事物的属性和方法
- 在使用时,通过
类名称()
的语法来创建对象
# 定义类的语法结构
class 类名称(object):
def __init__(self, 属性列表):
初始化属性
def 方法名称(self):
方法的操作代码
# 使用类来创建对象
变量名称 = 类名称(属性值)
3.1. 实际操作
3.1.1 通过一个模拟项目,来抽象一个类
创建一个游戏项目,游戏中有玩家的类型,玩家有昵称、账号、密码、职业等属性,有修炼的方法
# 定义玩家类型
class Player(object):
def __init__(self, nickname, username, userpass, userjob):
self.nickname = nickname
self.username = username
self.userpass = userpass
self.userjob = userjob
def growUp(self):
print(self.nickname + "在修炼中...")
3.1.2 使用类型
创建好的类型,在后续的代码中,就可以通过类名称()
来创建不同的对象并使用这些对象数据了
zhangXiaoFan = Player("张小凡", "xaiofan", "123456", "青云门弟子")
biYao = Player("碧瑶", "biyao", "123123", "鬼王宗少宗主")
# 使用对象的属性
print(zhangXiaoFan.nickname)
print(zhangXiaoFan.userjob)
# 调用对象的行为方法
zhangXiaoFan.growUp()
# 使用对象的属性
print(biYao .nickname)
print(biYao .userjob)
# 调用对象的行为方法
biYao .growUp()
# 执行结果:通过执行的结果我们可以看到不同对象的数据互相是独立的
张小凡
青云门弟子
张小凡在修炼中...
碧瑶
鬼王宗少宗主
碧瑶在修炼中...
总结及补充:
1.类是一种数据类型的简称、数据类型的简称、类型的简称,是一类具有共同属性和相似行为的对象抽象出来的一个概念、一个代号,统称某类事物
2.对象是类的具体存在的事物,代码中是根据类创建的具体的实例对象
3.类中的属性也是一种变量,我们通常将类中的属性称为对象的成员变量或者成员属性,将类中的方法称为成员方法
未完待续,请继续参考后续章节~面向对象