面向過程的核心是:過程二字,即先幹什麼,在幹什麼, 最後幹什麼。機械式思維方式
# 面向過程不是一門技術,是一種做事的思維方式
eg:大象放冰箱的步驟:
1. 開啟冰箱門,
2. 把大象放進冰箱
3. 觀賞冰箱門
優點:複雜的問題簡單化,流程化
缺點:擴充套件性差,牽一髮而動全身
應用場景:對擴充套件性要求不高的地方
eg2:
寫乙個註冊功能
物件導向核心是:物件二字
# 在python中,一切皆物件
1. 在程式中:
物件就是盛放資料屬性和功能的容器
2. 在現實生活中
物件就是特徵與技能的結合體
優點:擴充套件性強
缺點:簡單的問題複雜化
應用場景:對擴充套件性要求高的地方
eg:學生選課系統為例
defchoose_course(stu_dic,course):
stu_dic[
'courses
'
print('
%s選課成功%s
' % (stu_dic['
name
'], stu_dic['
courses
']))
stu1 =
stu2 =
stu1[
'choose_course
'](stu1, '
python')
stu2[
'choose_course
'](stu2, '
python
')
# 物件:特徵與技能的結合體
# 站在不同的角度,劃分的分類不一樣
類:一系列物件相似的特徵和相似的技能的結合體
問題來了?
到底是先有類還是先有物件?
1. 現實生活中:
一定是先有物件,在有類
2. 程式中:
必須先定義類,在呼叫類產生物件(*******)
# 注意事項:類名,遵循變數的命名規範即可,類名一般都是首字母大寫
# 類名有多個單詞,推薦使用大駝峰
classstudent():
#定義類屬性
school = 'sh'
#在類中,函式被稱為是方法
defchoose_course(stu_dic, course):
stu_dic[
'courses
'
print('
%s選課成功%s
' % (stu_dic['
name
'], stu_dic['
courses
']))
print(12233333)
'''定義類發生的幾件事?
1. 類定義完成後,會立馬執行類體**
2. 執行類體**,把類中的名字都丟到類的命名空間去
3. 把類的命名空間繫結給__dict__, 類名.__dict__
'''#
如何檢視類的命名空間
print(student.__dict__)#
產生物件, 呼叫類,類名()
stu1 = student() #
呼叫類,得到乙個空物件
stu2 =student()
#如何檢視物件的命名空間
print(stu1.__dict__) #
空字典print(stu2.__dict__) #
空字典
classstudent():
#定義類屬性
school = 'sh'
#初始化, 魔術方法
def__init__(stu_dic, name, age, gender, course=):
stu_dic.name = name #
stu.__dict__['name'] = 'tom'
stu_dic.age = age #
stu.__dict__['age'] = 19
stu_dic.gender = gender #
stu.__dict__['gender'] = 'male'
stu_dic.course = course #
stu.__dict__['course'] =
#在類中,函式被稱為是方法
defchoose_course(stu_dic, course):
stu_dic[
'courses
'
print('
%s選課成功%s
' % (stu_dic['
name
'], stu_dic['
courses
']))
#student()
#stu = student(stu, 'tom', 19, 'male')
stu = student('
tom', 19, '
male
') #
呼叫類的時候,會自動觸發__init__方法,並且,會把物件自己當成第乙個引數傳給函式
stu1 = student('
kevin
', 19, '
male
') #
呼叫類的時候,會自動觸發__init__方法,並且,會把物件自己當成第乙個引數傳給函式
#print(stu.__dict__)
#print(stu1.__dict__)
'''呼叫類的過程也稱為是例項化的過程,得到的物件就是乙個例項
'''
print(stu1.__dict__)#1.類屬性#讀
#print(student.__dict__['school'])
#print(student.school)##
# 改#
student.school = '***'##
#del student.school
## 刪除##
# 曾#
student.aaa = '***'
#print(student.__dict__)
#2. 物件屬性的增刪改查
#print(stu.name)
#print(stu.age)
#print(stu.gender)
#print(stu1.name)
#print(stu1.age)
#print(stu1.gender)
#物件的屬性查詢順序:先在物件自己的命名空間中查詢,如果找不到,去產生物件的類中取查詢
(stu.school)
#print(stu.__dict__['school'])#增
stu.x = '
aaa'
print(stu.__dict__)#
改stu.x = '
bbb'#刪除
del stu.x
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
物件導向程式設計
物件導向程式設計 抽象 封裝 繼承 多型 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。開放封閉原則 軟體實體應該可以擴充套件,但是不可修改。所有的設計模式都是對不同的可變性進行封裝,從而使系統在不同的角度上達到開發封閉原則。依賴倒轉原則 a 高層不應該依賴低層,兩個都應該依賴抽象。b ...
物件導向程式設計
class team def init self self.name tampa bay buccaneers bucs team print bucs.name tampa bay buccaneers 當呼叫team 函式時,會自動呼叫init函式,self是自動傳入到init中的引數,它指向當...