python 類與物件

2021-10-08 20:02:21 字數 2666 閱讀 1059

物件 = 屬性 + 方法

物件是類的例項。換句話說,類主要定義物件的結構,然後我們以類為模板建立物件。類不但包含方法定義,而且還包含所有例項共享的資料。

self 是什麼?

python 的 self 相當於 c++ 的 this 指標。

class

test

:def

prt(self)

:print

(self)

print

(self.__class__)

t = test(

)t.prt(

)# <__main__.test object at 0x000000bc5a351208>

#

類的方法與普通的函式只有乙個特別的區別 —— 它們必須有乙個額外的第乙個引數名稱(對應於該例項,即該物件本身),按照慣例它的名稱是 self。在呼叫方法時,我們無需明確提供與引數 self 相對應的引數

python 的魔法方法

據說,python 的物件天生擁有一些神奇的方法,它們是物件導向的 python 的一切…

它們是可以給你的類增加魔力的特殊方法…

如果你的物件實現了這些方法中的某乙個,那麼這個方法就會在特殊的情況下被 python 所呼叫,而這一切都是自動發生的…

類有乙個名為__init__(self[, param1, param2…])的魔法方法,該方法在類例項化時會自動呼叫。

公有和私有

在 python 中定義私有變數只需要在變數名或函式名前加上「__」兩個下劃線,那麼這個函式或變數就會為私有的了。

類的私有屬性例項

class

justcounter

: __secretcount =

0# 私有變數

publiccount =

0# 公開變數

defcount

(self)

: self.__secretcount +=

1 self.publiccount +=

1print

(self.__secretcount)

counter = justcounter(

)counter.count(

)# 1

counter.count(

)# 2

print

(counter.publiccount)

# 2print

(counter._justcounter__secretcount)

# 2 python的私有為偽私有

print

(counter.__secretcount)

# attributeerror: 'justcounter' object has no attribute '__secretcount'

繼承

python 同樣支援類的繼承,派生類的定義如下所示:

class

derivedclassname

(baseclassname)

:1>..

baseclassname(示例中的基類名)必須與派生類定義在乙個作用域內。除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用:

class

derivedclassname

(modname.baseclassname)

:1>..

.

如果子類中定義與父類同名的方法或屬性,則會自動覆蓋父類對應的方法或屬性。

# 類定義

class

people

:# 定義基本屬性

name =

'' age =

0# 定義私有屬性,私有屬性在類外部無法直接進行訪問

__weight =

0# 定義構造方法

def__init__

(self, n, a, w)

: self.name = n

self.age = a

self.__weight = w

defspeak

(self)

:print

("%s 說: 我 %d 歲。"

%(self.name, self.age)

)# 單繼承示例

class

student

(people)

: grade =

''def

__init__

(self, n, a, w, g)

:# 呼叫父類的構函

people.__init__(self, n, a, w)

self.grade = g

# 覆寫父類的方法

defspeak

(self)

:print

("%s 說: 我 %d 歲了,我在讀 %d 年級"

%(self.name, self.age, self.grade)

)s = student(

'小馬的程式人生',10

,60,3

)s.speak(

)# 小馬的程式人生 說: 我 10 歲了,我在讀 3 年級

Python 類與物件

引數 預設值 可變引數 關鍵字引數 命名關鍵字引數 返回值 python class student def init self,arg,kwargd 可變引數 arg kwargd if name in kwargd self.name kwargd name defmain s student ...

Python 類與物件

python是一種物件導向的程式語言。python中,幾乎所有東西都是乙個物件。物件有屬性和方法。類是用於建立物件的 藍圖 要建立類,請使用關鍵字class 示例 建立乙個名為myclass的類,其屬性名為x class myclass x 8現在可以使用myclass類建立物件 示例 建立乙個名為...

Python 類與物件

一.一 類 是對一群有相同特徵或者行為的事物的統稱,是抽象的,不可直接使用。二 物件 是由類創造出來的實體,可以直接使用。三 類與物件之間的關係 1.先有類再有物件 2.類只有乙個而物件可以有多個 四 類的設計 3要素 類名 大駝峰命名法 屬性 描述這類事物的特徵 方法 描述這類事物的具體行為 二....