Python知識點 物件導向的認識

2021-10-05 22:45:50 字數 3037 閱讀 4580

getattr(obj, name[, default]) : 訪問物件的屬性。

hasattr(obj,name) : 檢查是否存在乙個屬性。

setattr(obj,name,value) : 設定乙個屬性。如果屬性不存在,會建立乙個新屬性。

delattr(obj, name) : 刪除屬性。

析構函式del,__del__在物件銷毀的時候被呼叫,當物件不再被使用時,__del__方法執行

如果在子類中需要父類的構造方法就需要顯式的呼叫父類的構造方法,或者不重寫父類的構造方法。詳細說明可檢視: python 子類繼承父類建構函式說明。

在呼叫基類的方法時,需要加上基類的類名字首,且需要帶上 self 引數變數。區別在於類中呼叫普通函式時並不需要帶上 self 引數

python 總是首先查詢對應型別的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查詢。(先在本類中查詢呼叫的方法,找不到才去基類中找)。

如果在子類中需要父類的構造方法就需要顯式地呼叫父類的構造方法,或者不重寫父類的構造方法。

子類不重寫init,例項化子類時,會自動呼叫父類定義的init

例項

class

father

(object):

def__init__

(self, name)

: self.name=name

print

("name: %s"

%( self.name)

)def

getname

(self)

:return

'father '

+ self.name

class

son(father)

:def

getname

(self)

:return

'son '

+self.name

if __name__==

'__main__'

: son=son(

'runoob'

)print

( son.getname(

))

輸出結果為:

name: runoob

son runoob

如果重寫了__init__ 時,例項化子類,就不會呼叫父類已經定義的init,語法格式如下:

例項

class

father

(object):

def__init__

(self, name)

: self.name=name

print

("name: %s"

%( self.name)

)def

getname

(self)

:return

'father '

+ self.name

class

son(father)

:def

__init__

(self, name)

:print

("hi"

) self.name = name

defgetname

(self)

:return

'son '

+self.name

if __name__==

'__main__'

: son=son(

'runoob'

)print

( son.getname(

))

輸出結果為:

hison runoob

如果重寫了__init__ 時,要繼承父類的構造方法,可以使用 super 關鍵字:

super(子類,self).init(引數1,引數2,…)

還有一種經典寫法:

父類名稱.init(self,引數1,引數2,…)

例項

class

father

(object):

def__init__

(self, name)

: self.name=name

print

("name: %s"

%( self.name)

)def

getname

(self)

:return

'father '

+ self.name

class

son(father)

:def

__init__

(self, name)

:super

(son, self)

.__init__(name)

print

("hi"

) self.name = name

defgetname

(self)

:return

'son '

+self.name

if __name__==

'__main__'

: son=son(

'runoob'

)print

( son.getname(

))

輸出結果為:

name: runoob

hison runoob

foo: 定義的是特殊方法,一般是系統定義名字 ,類似init() 之類的。

_foo: 以單下劃線開頭的表示的是 protected 型別的變數,即保護型別只能允許其本身與子類進行訪問,不能用於 from module import *

__foo: 雙下劃線的表示的是私有型別(private)的變數, 只能是允許這個類本身進行訪問了。

Python知識點 物件導向程式設計

物件導向程式設計是一種程式設計正規化,把程式看作不同物件的相互呼叫,對現實世界建立物件模型。定義乙個person類如下 class person object pass格式為 class 類名 object object表示定義的類是由那個類繼承下來的 函式體pass類名一般以大寫開頭。建立例項使用...

python之物件導向知識點總結

物件導向 三大特性 封裝 繼承 多型 python 本身是一種弱型別語言,本身就支援多型 繼承 多重繼承 執行某個方法 尋找方法的規律 從下往上 從左往右 始終記得self物件代表的是誰,那個物件呼叫的方法,self酒代表的是誰 通過super 類,self init 可以呼叫父類的構造方法 還可以...

物件導向知識點總結

1 物件導向的特徵 物件導向的三個基本特徵是 封裝 繼承 多型。封裝 也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。繼承 物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有功能,並在無需...