面向物件程式設計(python)和部分面向物件高階程式設計
1.類和物件
在python中定義類
class 類名(首字母最好大寫)Student (Object(父類)):
def __init__(self):
self.屬性 1= 引數1
self.屬性2 = 引數2
變數 = Student(類名)
s.屬性1 = ‘字串’
__init__是一個特殊的函式用來初始化物件
self執行當前類的例項化物件
2.訪問限制
1)如果不想類中的引數不受限制地賦值,可以在屬性的前面新增__(兩個雙劃線)來宣告屬性為private型別,不允許外部訪問
2)如果希望訪問呢,那麼就通過get方法和set方法來訪問
例如:def get_name(self):
return self.__name
def set_name(self,name):
self.__name = name
3.繼承和多型
繼承就是繼承父類的所有特點,而且可以根據自己的情況,修改父類的方法
多型就是可以定義一個引數為父類型別的方法,最後傳入,子類物件引數,返回適合子類的方法
4.動態語言就是不需要繼承那樣,只需要有相同的方法就可以像鴨子一樣的走路的那種的“鴨子型別”
5.獲取物件資訊
1)判斷物件資訊可以通過type方法,以及函式的判斷型別匯入importtypes 語句來通過types判斷函式的型別
2)可以通過isinstance()函式來判斷物件的型別,將父類以及子類“一網打盡”,還可以通過dir()來判斷屬性的所有資訊
3)可以通過hasattr()函式來判斷是否含有該屬性資訊,setattr()函式可以設定物件的屬性資訊,getattr()函式可以獲取物件的資訊
5.例項物件和類物件
1)例項物件會覆蓋類物件
2)類物件資訊為整個類所共有
3)注意:不要將例項物件與類物件重名
6.slots
slots 就是用來設定物件的屬性個數的
7.@property
@property裝飾器是來簡化引數暴露問題的
1)可以通過設定@property以及屬性.setter來控制屬性的引數範圍以及一些規範
例如
@property
def birth(self):
return self._bitrth
@birth.setter
def birth(self,value):
if not instance(value,int):
rasie ValueErroe('value must be an Integer!')
elif(value<0)|(value>1000):
rasie ValueError('value must between0-1000!')
self._birth = value
2)這個時候例項物件名與方法名不能相同