Python3 物件導向

2021-10-08 03:04:25 字數 1792 閱讀 9923

python中採用name mangling(名字改編,名字重整)

定義私有變數只需要在變數名或函式名前加上"_"兩個下劃線,那麼這個函式或變數就會為私有的。

>>

>

class

person:.

.. __name =

"abs"..

.>>

> p = person(

)>>

> p

<__main__.person object at 0x7f6a67da3f98

>

>>

>

type

(p)<

class

'__main__.person'

>

>>

> p.__name

traceback (most recent call last)

: file ""

, line 1,in

attributeerror:

'person'

object has no attribute '__name'

import random as r

class

fish

:def

__init__

(self)

: self.x = r.random(0,

10)self.y = r.random(0,

10)defmove

(self)

: self.x -=

1print

("my positon:"

, self.x, self.y)

class

goldfish

(fish)

:pass

class

carp

(fish)

:pass

class

salmon

(fish)

:pass

class

shark

(fish)

:def

__init__

(self)

:

self.hungry=

true

# overide重寫父類init方法,本類無fish的(x,y)方法

defeat

(self)

:if self.hungry:

print

(" shark eat true"

) self.hungry =

false

else

:print

("shark eat false"

)shark中由於複寫了__init__方法,因此shark沒有了(x, y)方法,這樣就導致乙個問題,shark繼承自fish中move會報錯,

因此繼承中,要注意這類問題,解決方法就是在子類中顯式呼叫父類init方法。

實現方式:

呼叫未繫結的父類方法

使用super函式

def__init__

(self)

: fish.__init__(self)

# 呼叫未繫結的父類方法

super()

.__init__(

)# 使用super函式

self.hungry=

true

使用super

()的好處就是不依賴基類名字,而且當有多個繼承關係時更簡單一致。

python3物件導向

類 class 描述同屬性和方法的物件的集合。方法 類中定義的函式 例項化 建立乙個類的例項,類的具體物件。物件 通過類定的資料例。包括兩個資料成員 類變數和例項變數 和方法。支援操作 屬性引用和例項化 class myclass i 12345 deff self return hello wor...

Python3 物件導向

類名 這類事物的名字,滿足大駝峰命名法,每乙個單詞的首字母大寫 屬性 這類事物具有什麼樣的特徵,身高,體重,年齡等 方法 這類事物具有什麼樣的行為,會跑,會說話,會跳等 class cat 名字貓的類,建議用大駝峰 def init self,new name,new age self.name n...

python3物件導向

類的定義 class classname name 屬性 age 18 私有屬性 deff self 方法,self 代表的是類的例項 return hello world def say self 私有方法,self 代表的是類的例項 print hello world 例項化 x classna...