面向对象(1)
1.1 面向对象的简介
面向对象(oop)
1 什么是对象?
对象就是内存中存储指定数据的一块区域
实际上对象就是一个容器,专门用来存储数据
1.2 对象的结构
1 id(标识)
id 用来标识对象的唯一性,每个对象都有唯一的id
id 是由解释器生成的,id就是对象的内存地址
2 type(类型)
类型就决定了对象有哪些功能
通过type()函数来查看对象的类型
3 value(值)
值指的就是对象中存储的具体数据
可变对象和不可变对象
可变 list ,dict, set 等 不可变 Number(int float) ,string, Tuple, bool等
1.3 面向对象的举例
1 所谓面向对象简单理解就是语言中所有的操作都是通过对象来进行的
2 面向对象是一种思考问题的方式,面向对象它是一种思想
3 面向对象将实物变的简单化了
4 面向对象有三个特征:继承,多态,封装
问把大象装冰箱总共分几步?
1 面向过程:第一步 打开冰箱门 第二步 装大象 第三部 关门
面向过程将一个功能分解成一个一个小的步骤
缺点:但是这种编程方式往往只适用于一个功能,我们要实现别的功能的时候,往往需要编写新的代码,复用性比较低
优点:比较符合人的思维,编写起来比较容易
2 面向对象:创造大象以及冰箱这两个对象
大象多高,多重等属性,具有位移,进门等行为,冰箱多大,多高等属性,有开门,关门,制冷等行为,我们只需要告诉将大象关进冰箱,不用管大象走几步,以及冰箱开关门,只需关进去后告诉我就行,这两个对象就有分装这一特性,
如果我要将大象关进笼子,就可以调用冰箱的开关门的属性,添加顶部可有门等属性,没有制冷,可以通风等行为,这就有了继承,多态的特性
1.4 类(class)的简介
一 目前学习的对象都是python内置的对象
类简单理解就是一张图纸,在程序中我们需要根据类来创建对象
1 定义一个类
语法: class 类名([父类]):
代码块
class MyClass():
pass
print(MyClass) # __main__表示当前文件是主文件
mc = MyClass() # 用MyClass这个类创建了一个对象mc,mc是MyClass的实例
print(mc,type(mc)) # 打印mc的对象以及mc 的类型
mc2 = MyClass()
print(mc2)
# 打印mc2对象
print(type(MyClass)) # 打印MyClass的类型
# isinstance()# 用来检查一个对象的类型
result = isinstance(mc2,MyClass)
print(result)
运行结果
<class '__main__.MyClass'>
# __main__表示当前文件是主文件,类型为MyClass
<__main__.MyClass object at 0x0000024F20520908> <class '__main__.MyClass'> # mc 的对象,以及mc的类型为MyClass
<__main__.MyClass object at 0x0000024F20520A58>
# mc2 的对象
<class 'type'> # MyClass 的类型为type
True # mc2 为MyClas类型
1.5 对象的创建流程
1 类是什么?
类也是一个对象(类是一个用来创建对象的对象)
类是一个type类型的对象
上面通过MyClass创建的类都是空类
可以像对象中添加变量,对象中的变量我们称之为属性
2 语法格式:
对象.属性名 = s属性值
class MyClass():
pass
mc = MyClass()
mc2 = MyClass()
mc.name = '葫芦娃'
mc2.name = '钢铁侠'
print(mc.name,mc2.name)
运行结果
葫芦娃 钢铁侠
1.6 类的定义
1 类和对象都是对现实生活事务或程序内容的抽象
2 实际上所有的事务就是由两部分组成
1.数据(属性)
2.行为(方法)
定义一个人类
class Person:
# 在类的代码中,可以定义变量和函数
# 在类中的变量 将会成为所有实例的公共属性
# 所有实例都可以访问这些变量
a = 10
b = 20
name = '葫芦娃'
# 在类中有何可以定义函数 类中的函数我们称之为方法
# 这些方法通过该类的实例都可以访问
# 如果是函数 有几个形参传几个实参
# 如果是方法 默认传递一个参数 所以类中的方法至少要定义一个形参 self
def speak(self):
print('你好我是%s'%self.name)
# 传递的这个参数,就是调用方法的对象本身
# 一般我们都会将这个参数命名为self
# print(a)
# 创建Person的实例
p1 = Person()
p2 = Person()
p3 = Person()
p1.name = '钢铁侠'
p2.name = '绿巨人'
p1.speak()
p2.speak()
p3.speak()
运行结果
你好我是钢铁侠 # 先访问实类中的,如果没有再访问类中的
你好我是绿巨人
你好我是葫芦娃
下面附两张图更好理解