1. 程式人生 > 其它 >面向物件程式設計(python)和部分面向物件高階程式設計

面向物件程式設計(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)這個時候例項物件名與方法名不能相同