面向對象編程(1)

面向對象編程特徵:封裝、繼承、多態

面向對象與面向過程
面向過程:分析出解決問題的步驟,根據步驟用代碼一一實現的編程方法
程序=數據結構+算法
面向對象:把解決問題的事物分解成多個對象,而建立對象的目的也不是爲了完成一個個步驟,而是爲了描述某個事物在解決整個問題的過程中所發生的行爲
程序=對象+行爲

類與對象
對象是實際存在的事物,對象的特徵與功能組成
類是抽象的,是對一羣具有相同屬性和行爲的事物的統稱

類的定義
語法格式
class 類名:
類屬性名 = 屬性值;
def init(self,[變量列表]) # 類的初始化方法
self.屬性名 = 默認初值 #實例屬性
def 方法名(參數列表):
方法體
注意 :
類名首字母必須大寫,合成詞兩個首字母都必須大寫
類的初始化方法:爲類的屬性賦初值 默認參數self:表示對象
本身 變量列表:對象的屬性名列表,描述事物特徵
類的方法,表示一類型事物的行爲

類的創建舉例
class Cat(object):
def init(self) :
self.name=“小明”
self.age=3
def eat(self):
print(“這隻名字叫%S的小貓喜歡吃魚!”%(self.name))
def sleep(self):
print(“這隻%S歲的小貓每天需要10小時睡眠!”
%(self.age))

對象的創建
語法格式:
對象名 = 類名([參數列表])

對象引用屬性和調用方法:
對象名.屬性名 #可通過賦值直接修改屬性的值
對象名.方法名(實參)

初始化方法
作用:
初始化對象的屬性,定義實例屬性,在使用類創建對象時會自動調用,如果不顯示地寫構造函數,則自動添加一個空的構造函數
無參的構造方法
def init(self):
self.name=“huahua”
說明:如果是無參的構造方法,可以直接爲屬性賦值
有參的構造方法
def init(self,name):
self.name=name
說明:有參的構造方法,可以通過對象創建時給該對象傳遞一個新值

構造方法
作用:對類進行重新
定義方法:
def new(cls,參數列表):
return object.new(cls)
注意 :
cls指向爲類,表示類對象
參數列表必須和init中定義的參數一樣
return返回該類父對象的構造方法

構造方法與初始化方法
1._ init 完成對象的初始化操作,對象創建後立即調用, new 是構造方法,創建對象時先調用,其中必須定義返回值,參數必須和 _ init_ 中定義的參數一致
2.
_ new_ 中cls表示實例化的類,而 init 終的self就是 _new _ _中返回的實例也就是對象本身
3.init是在new的基礎上完成的初始化操作

析構方法
作用:
刪除一個對象來釋放類所佔用的資源。
方法:
def del(self):
print(“刪除對象!”)

del 對象名

_ str _方法
_ str _方法是父類定義的方法,在重寫時,通過定義return的值可在print(對象名)時自動調用,通常用於當對象有多個屬性輸出時,通過重寫該方法實現代碼簡化

在這裏插入圖片描述
類方法:
1.實例方法:
定義格式:
def 方法名(self,[形參列表]):
方法體
實例方法的調用只能由類創建的對象進行調用,且實例方法中形參列表的第一個參數必須是self
2.類方法:
定義格式:
@classmethod
def 方法名(cls,[形參列表]):
方法體
類方法的調用可以通過類名和類對象來調用,但類方法的形參列表的第一個參數必須是cls,且類方法在定義時需要用@classmethod聲明
3.靜態方法:
定義格式:
@staticmethod
def 方法名([形參列表]):
方法體
靜態方法的調用可以通過類名和類對象來調用,多個對象客共享靜態方法,靜態方法的形參列表沒有默認參數,且類方法在定義時需要用@classmethod聲明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章