Python 物件導向

2021-10-09 10:40:32 字數 3353 閱讀 8464

class

player_profile()

:def

__init__

(self,nick_name,job)

: self.nick_name = nick_name

self.job = job

defillustrate

(self)

:print

(f'該玩家暱稱,職業為'

)player1 = player_profile(

'大西瓜'

,'戰士'

)player1.illustrate(

)player2 = player_profile(

'小綿羊'

,'魔法師'

)player2.illustrate(

)plyaer3 = player_profile(

)player3.illustrate(

)

該**執行結果如下:

該玩家暱稱大西瓜,職業為戰士

該玩家暱稱小綿羊,職業為魔法師

traceback (most recent call last):

file 「c:/users/robin ding/pycharmprojects/pythonproject1/temp.py」, line 13, in

plyaer3 = player_profile()

typeerror:init() missing 2 required positional arguments: 『nick_name』 and 『job』

process finished with exit code 1

由此可見,在玩家檔案這個類中,我們通過__init__的特殊方法,將nick_name 和 job這兩個變數設定為了必填屬性,如果向player3這樣建立了物件,卻沒有傳入必要的實參,就會報錯,這樣我們就知道有必填項沒有填入。

class

player_profile()

:def

__init__

(self,nick_name,job)

: self.nick_name = nick_name

self.hidden_job = job

defillustrate

(self)

:print

(f'該玩家暱稱,職業為'

)player1 = player_profile(

'大西瓜'

,'戰士'

)print

(player1.nick_name)

player2 = player_profile(

'小綿羊'

,'魔法師'

)print

(player2.job)

**執行結果如下:

大西瓜

traceback (most recent call last):

file 「c:/users/robin ding/pycharmprojects/pythonproject1/temp.py」, line 12, in

print(player2.job)

attributeerror: 『player_profile』 object has no attribute 『job』

process finished with exit code 1

由此可見,我們將job賦值給了hidden_job這個變數,這樣job這個屬性就沒有辦法通過外部訪問,相對應的是,nick_name沒有進行封裝操作,就可以仍然訪問到結果「大西瓜」。

注意事項:

class

player_profile()

:def

__init__

(self,nick_name,job)

: self._nick_name = nick_name

self._job = job

defillustrate

(self)

:print

(f'該玩家暱稱,職業為'

)def

set_nick_name

(self,nick_name)

: self._nick_name = nick_name

defget_nick_name

(self)

:print

(self._nick_name)

return

player1 = player_profile(

'大西瓜'

,'戰士'

)player1.set_nick_name(

'我是mt'

)player1.get_nick_name(

)

**執行結果如下:

我是mt

由此可見我們通過setter()的方法可以已經封裝的物件進行修改,getter()的方法對封裝的物件進行了訪問。 雖然這樣修改和訪問資料更複雜,但是更安全。 getter()和setter()⽅法可以很好控制屬性是否是唯讀的

class

player_profile()

:def

__init__

(self,nick_name,job)

: self._nick_name = nick_name

self._job = job

@property

defnick_name

(self)

:return self._nick_name

@nick_name.setter

defnick_name

(self,nick_name)

: self._nick_name = nick_name

player1 = player_profile(

'大西瓜'

,'戰士'

)print

(player1.nick_name)

player1.nick_name =

'我是mt'

print

(player1.nick_name)

執行結果如下:

大西瓜

我是mt

可以看到 property和setter裝飾器,都是方法,但是都不需要在方法名後加括號。property裝飾器就建立了唯讀屬性,setter裝飾器就將方法轉變為了可修改的屬性。

python物件導向學習 python物件導向學習

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。物件導向三個概念 1.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...

python物件導向總結 Python物件導向總結

python 物件導向 oop 1 物件導向 是乙個更大封裝,把乙個物件封裝多個方法 2 類 是對一些具有相同特徵或行為的事物的乙個統稱,是抽象的,不能直接使用 特徵被稱為屬性 行為被稱為方法 3 物件 是由類建立出來的乙個具體的存在,可以直接使用 先有類再有物件,類只有乙個,而物件可以有多個 類中...

python登入物件導向 python 物件導向

一 屬性和方法 1.a a 例項屬性 通過例項物件來新增的屬性就是例項屬性 a.count 10 例項方法都是在類中直接定義的 以self為第乙個引數的方法都是例項方法 當通過例項物件呼叫時,會自動傳遞當前物件作為self傳入 當通過類物件呼叫時,不會自動傳遞self a.test 等價於 a.te...