Python面向对象
1.定义
面向对象:把数据和动作内嵌到一个结构体(函数或类)里,就有了一个‘对象系统’(对象就是数据与函数整合在一起的产物)
类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念。
对象:就是基于类而创建的一个具体的事物(具体存在的),也是特征和动作整合到一起。
面向对象设计(Object oriented design):将一类具体事物的数据和动作整合到一起,即面向对象设计。面向对象设计既可以用面向对象语言实现,也可以用面向过程语言实现。
面向对象编程(Object oriented programming):用面向对象编程独有的class语法实现面向对象设计,即面向对象编程。
用面向对象语言写程序,和一个程序设计是面向对象的,两者间并没有任何关系。
面向对象语言:提供了丰富的class方面的方法支持。)
2.实现
# 定义一个学生,有姓名,性别,年龄,班级属性,有学习方法
- 面向过程语言实现面向对象设计
def student(name, gender, age, class_no):
def init():
student_property = {
'name': name,
'gender': gender,
'age': age,
'class_no': class_no,
'learn': learn
}
return student_property
def learn(student_property):
print('%s的%s同学正在学习,他今年%d岁' % (student_property['class_no'], student_property['name'], student_property['age']))
return init()
xiaoming = student('小明', '男', 18, '高三2班')
xiaoming['learn'](xiaoming)
执行的结果:
高三2班的小明同学正在学习,他今年18岁
- 面向对象语言实现面向对象设计
class Student(object):
def __init__(self, name, gender, age, class_no):
self.name = name
self.gender = gender
self.age = age
self.class_no = class_no
def learn(self):
print('%s的%s同学正在学习,他今年%d岁' % (self.class_no, self.name, self.age))
xiaoming = Student('小明', '男', 18, '高三2班')
# xiaoming.learn()等价于下面这句话
Student.__dict__['learn'](xiaoming)
执行的结果:
高三2班的小明同学正在学习,他今年18岁