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歲