6.1.1 什麼是物件導向
面向過程式程式設計:
好處:出色的完成所有的需求
壞處:凡是更改或者增加一條需求,可能整個專案都隨之改變
物件導向式程式設計:
類:具有相似功能和特性的一類事物
物件:類的具體體現
類的優點:
類是相似功能特徵的集合,可以讓**更清晰,更合理化
類是乙個公共的模板,物件是從這個模板產出的實體
6.1.2 類
結構
class 類名: #類名要具有意義,一般使用駝峰體命名
#類的描述
類的變數
類的函式
其中:
類的變數,公認叫做屬性(靜態屬性,靜態字段)
類的方法,公認叫做方法(動態方法,動態屬性)
例子:
class student():
""" 構建學生類 """
daily = '學習'
role = '學習技能'
def work(self):
print('每天都要上課')
def study(self):
print('公共課和專業課')
類的屬性:
1.檢視類的所有內容,使用:類名.__dict__
獲取類的全部資訊
print(student.__dict__)
輸出內容中類的內建屬一些內建屬性的含義
2.使用 . 對靜態的屬性操作
print(student.daily) #查
student.daily = '寫**' #改
del student.role #刪
print(student.__dict__)
3.類名的角度呼叫類中的方法,一般類中的方法(除去類的方法,靜態屬性外)通過以下方式呼叫
student.work(2) #對於動態的方法,採用這種方式呼叫
student.__dict__['work'](2) #一般不採用這種方法
6.1.3 物件
例項化過程:
物件名 = 類名() 例項化乙個物件
class student:
'''定義學生類'''
daily = '學習'
role = '學習技能'
def __init__(self):
print(self)
print('666')
def work(self):
print('每天都要上課')
def study(self):
print('公共課和專業課')
st1 = student() #比較st1的位址與self的位址
print(st1)
st2 = student()
print(st2)
實體化物件時發生的三件事:
物件的屬性
通過 物件名.屬性名 對__init__
進行增刪改查,就是對物件的屬性進行操作
class student:
'''定義學生類'''
daily = '學習'
mission = '學習技能'
def __init__(self):
self.name = '蓋倫'
self.team = '德瑪西亞'
def work(self):
print('每天都要上課')
def study(self):
print('公共課和專業課')
st = student()
print(st.name)
st.role = '戰士'
print(st.__dict__) #檢視 st 的屬性
del st.role
print(st.__dict__)
物件檢視類的屬性
物件只能檢視類裡的公共屬性,無法更改類的屬性,這裡需要注意的是即使使用 物件名.類裡的屬性名 進行的操作只是在物件的空間__init__
裡新增了與類同名的屬性,其實二者存在於不同的記憶體空間中。
6.1.4 動態實體化物件
可以在任何位置給物件封裝屬性,在物件實體化時給在類的相應位置設定實參即可,還可以在類的方法內也可對物件的屬性進行操作。
class student:
'''定義學生類'''
daily = '學習'
mission = '抵禦外敵'
def __init__(self,na,te):
self.name = na
self.team = te
def work(self,eq):
self.equip = eq
print(f"需要裝備,為了") #仔細研究這裡屬性的呼叫,非常有意思
def study(self):
print('公共課和專業課')
st = student('蓋倫','召喚師峽谷')
print(st.__dict__)
st.work('日炎鎧甲')
print(st.__dict__)
6.1.5 self
self就是類中的方法的第乙個位置引數,如果通過物件執行類中的方法,直譯器就自動的將此物件空間當做實參傳給self,其實self最大的作用就是引用當前方法的呼叫者。
淺顯的理解就是,在物件內部進行的相互引用或是賦值等操作,就用self,也就是self作為自己的內部相互操作加個名字,不然怎麼使用 . 呢。
class student:
'''定義學生類'''
daily = '學習'
mission = '抵禦外敵'
def __init__(self):
self.name = '蓋倫'
def work(self): #定義乙個work方法
print('現在執行的是work方法')
def study(self): #定義乙個study方法,需要借用work的方法
self.work() #使用self引數引用呼叫work()方法的物件
print('現在執行的是study方法')
s = student()
s.study()
Python學習之物件導向
物件導向是一種設計思想 1 符合人們的思考習慣 2 把執行者變成指揮者 3 簡化功能,把複雜的事情簡單化 想完成一件事,找具有這樣功能的物件 如果能找到,呼叫這個物件的功能,完成這個事 如果找不到,建立具有這樣功能的物件,再呼叫完成這個事 類是對事物的描述,是抽象的。物件是類的具體體現。類對事物的描...
python之物件導向學習0
物件導向是相對於面向過程而言的,在早期程式設計中,比如實現1 2 3 6.通過設計乙個簡單的演算法就能實現。隨著計算機技術的不斷提高,計算機被用於解決越來越複雜的問題。一切事物皆物件,通過物件導向的方式,將現實世界的事物抽象成物件,現實世界中的關係抽象成類 繼承,幫助人們實現對現實世界的抽象與數字建...
python之物件導向
類 是乙個特殊的物件,class a 定義的類屬於 類物件 類的例項 obj a 屬於 例項物件 例項屬性 init 定義例項屬性 例項方法 self 物件名.方法名 類屬性 針對類物件定義的屬性,訪問類屬性方法 類名.類屬性 物件名.類屬性 類方法 針對類物件定義的方法,內部可直接訪問類屬性和其他...