物件導向程式設計

2022-09-21 06:15:11 字數 3543 閱讀 8176

面向過程的核心是:過程二字,即先幹什麼,在幹什麼, 最後幹什麼。機械式思維方式

# 面向過程不是一門技術,是一種做事的思維方式

eg:大象放冰箱的步驟:

1. 開啟冰箱門,

2. 把大象放進冰箱

3. 觀賞冰箱門

優點:複雜的問題簡單化,流程化

缺點:擴充套件性差,牽一髮而動全身

應用場景:對擴充套件性要求不高的地方

eg2:

寫乙個註冊功能

物件導向核心是:物件二字

# 在python中,一切皆物件

1. 在程式中:

物件就是盛放資料屬性和功能的容器

2. 在現實生活中

物件就是特徵與技能的結合體

優點:擴充套件性強

缺點:簡單的問題複雜化

應用場景:對擴充套件性要求高的地方

eg:學生選課系統為例

def

choose_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. 程式中:

必須先定義類,在呼叫類產生物件(*******)

# 注意事項:類名,遵循變數的命名規範即可,類名一般都是首字母大寫

# 類名有多個單詞,推薦使用大駝峰

class

student():

#定義類屬性

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__) #

空字典

class

student():

#定義類屬性

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)

#物件的屬性查詢順序:先在物件自己的命名空間中查詢,如果找不到,去產生物件的類中取查詢

print

(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中的引數,它指向當...