Python_面向对象设计
一 三大编程范式
编程范式即编程的方法论,一种编程风格
三大编程范式:
1.面向过程编程
2.函数式编程
3.面向对象编程
类:
把一类事物的相同 特征和动作 整合到一起 就是类,类是一个抽象的概念
对象:
基于类而创建的具体的事物,也是具体的特征和动作 整合到一起
二 面向对象设计 与 面向对象编程
面向对象设计(Object oriented design):将一类 具体事物的 特征属性和动作 整合到一起 ,即面向对象设计
面向对象设计(OOD)不会特别要求使用 面向对象编程语言,事实上,OOD可以用纯结构化语言来实现(比如C语言),但是如果想要构造具备对象性质和特点的数据类型,就需要在程序 上作更多的努力
下面的是面向对象的首个版本
#面向对象设计思想,假设把人作为一个对象,有什么特征属性呢,会有什么行为呢 def human(name,age,gender): def eat(): pass print("%s is %i years old & is eating !!!" %(name,age)) def sport(): pass print("%s is %i years old & is in motion!!! " %(name,age)) #把特征属性及行为列出 humam_p = { 'name':name, 'age':age, 'gender':gender, 'eat':eat, #后面的eat函数的内存地址,再加上()变成eat()便可执行函数 'sport':sport #后面的sport函数的内存地址,再加上()变成sport()便可执行函数 } return humam_p #让我们的函数有返回值 print(human("James",18,"male")) #看返回值,是个字典,想执行字典里的函数怎么办 human("James",18,"male")['eat']() #加()就是执行eat()方法 human("James",18,"male")['sport']() #加()就是执行eat()方法
下面是面向对象的第二版本
#面向对象设计思想,假设把人作为一个对象,有什么特征属性呢,会有什么行为呢 def human(name,age,gender): # 把特征属性及行为列出,,数据 和 动作 分离 def init(name,age,gender): human_p = { 'name': name, 'age': age, 'gender': gender, 'eat': eat, # 后面的eat函数的内存地址,再加上()变成eat()便可执行函数 'sport': sport # 后面的sport函数的内存地址,再加上()变成sport()便可执行函数 } return human_p def eat(human_p): pass print("%s is %i years old & is eating !!!" %(human_p['name'],human_p['age'])) def sport(human_p): pass print("%s is %i years old & is eating !!!" %(human_p['name'],human_p['age'])) return init(name,age,gender) #让我们的函数有返回值 man1 = human("James",18,"male") man2 = human("Mango",17,"female") man1['eat'](man1) #加()就是执行eat()方法 man2['eat'](man2) #加()就是执行eat()方法
面向对象编程(Object-oriented programming):用定义类+实例/对象的方式去实现面向对象设计
class Human: '类的文档说明字符串' def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender def eat(self): print("%s is %i years old & is eating !!!" % (self.name, self.age)) def sport(self): print("%s is %i years old & is in motion!!! !!!" % (self.name, self.age)) #Human类实例化出一个对象,名叫man1 man1 = Human("James",22,"male") print(man1.__dict__) #_init_其实返回的就是字典 man1.eat()
三 类和对象
类:类是一种数据结构,好比一个模型,该模型用来表述一类事物(数据属性和动作的结合体),用类来生产真实的物体(实例)
对象:你能看到的都可以是对象
类与对象的关系:对象都是由类产生的,就像上帝造人,上帝先有一个模块,然后根据定义来生产一个个人(对象)
实例化:由类生产对象的过程就叫实例化,类实例化的结果就是对象(对象也叫实例)
三.1.1 经典类 & 新式类 python3都是新式类
三.1.2 属性
类的对象都是事物,事物都有属性
属性分为两种
1,数据属性:变量
2,函数属性:函数,在面向对象里通常叫方法
#Human类实例化出一个对象,名叫man1 man1 = Human("James",22,"male") print(dir(Human)) #列出属性名称,列表 print(Human.__dict__) #_列出属性名称及其对应的值,字典 man1.eat()
print(Human.__dict__['__doc__']) #取出某个属性,和下面的完全一样 print(Human.__doc__) #取出某个属性,和上面的完全一样
特殊的类属性
print(Human.__name__) #类的名字 print(Human.__doc__) #类的文档字符串 print(Human.__base__) #类的第一个父类(继承) print(Human.__bases__) #类的所有父亲构成的元组(继承) print(Human.__dict__) #类的属性 print(Human.__module__) #类的定义所在的模块 print(Human.__class__) #实例 对应的类(仅新式类)
三.2 对象相关知识
对象是由类实例化而来
三..2.1 实例化