天天看點

面向對象程式設計(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方法,以及函數的判斷類型導入import types 語句來通過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

繼續閱讀