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(
)
該**執行結果如下:
該玩家暱稱大西瓜,職業為戰士由此可見,在玩家檔案這個類中,我們通過__init__的特殊方法,將nick_name 和 job這兩個變數設定為了必填屬性,如果向player3這樣建立了物件,卻沒有傳入必要的實參,就會報錯,這樣我們就知道有必填項沒有填入。該玩家暱稱小綿羊,職業為魔法師
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
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)
**執行結果如下:
大西瓜由此可見,我們將job賦值給了hidden_job這個變數,這樣job這個屬性就沒有辦法通過外部訪問,相對應的是,nick_name沒有進行封裝操作,就可以仍然訪問到結果「大西瓜」。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
注意事項:
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)
執行結果如下:
大西瓜可以看到 property和setter裝飾器,都是方法,但是都不需要在方法名後加括號。property裝飾器就建立了唯讀屬性,setter裝飾器就將方法轉變為了可修改的屬性。我是mt
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...