Python學習日記 Day10類與物件 上

2021-10-02 23:33:09 字數 2640 閱讀 5943

今天是2023年2月19日,多雲,4~12℃

最近周圍很多同學都開始上網課了,然而我只加了群,還沒有老師通知上課的方式和時間,搞得我有點發慌。正式開網課之後每天的進度估計會變得更少(雖然現在已經每天都在划水了)。

class 關鍵字用於類的定義,類的定義中包含屬性和方法。屬性是類的成員變數;方法是類的成員函式。

'''

class classname(base1,base2,...):

'''class

person()

: self.name =

"anonymous"

#屬性def

print_name

(self)

:#方法

print

(self.name)

類名後的空括號表示該類不繼承其他類(或僅繼承 object 類)。

self是物件自身的引用:它規定了該 屬性/方法 為例項物件的 屬性/方法;若不加self,則 屬性/方法 將變為乙個類 屬性/方法(靜態 屬性/方法 )。

同一類的不同物件,屬性不可能完全相同。因此需要乙個特殊的方法init為例項物件提供資訊。

class person()

:def

__init__

(self,name)

:#__init__ 方法

self.name = name

defprint_name

(self)

:print

(self.name)

與c++等語言不同,python的屬性不需要在定義類時宣告,而是在建立變數並賦值時直接生效。

init方法的首尾雙下劃線表示這是乙個系統定義的名字。在寫自定義的方法時避免使用這種命名法。

此外還有單下劃線開頭和雙下劃線開頭的屬性和方法。

單下劃線開頭類似 protected 修飾,僅自身類物件和子類物件可以訪問。

雙下劃線開頭類似 private 修飾,僅自身類物件可以訪問。

在使用時,可以通過名稱改編的形式繞過封裝訪問這兩種型別的屬性和方法,但良好的程式設計習慣是不要在外部使用它。

1、建立例項

建立例項的方式為:首先指定變數名,再像使用函式一樣使用類名,引數為init方法的參數列,並使用等號賦值。

person_1 = person(

"blair"

)

2、訪問物件與呼叫方法

完成例項物件的建立後,就可以使用該例項訪問物件的屬性,呼叫物件的方法了。

print

(person_1.name)

#訪問name屬性 output:blair

person_1.print_name(

)#呼叫print_name方法 output:blair

3、為屬性新增預設值

為屬性新增預設值可以通過預設值引數,也可以直接為屬性賦值。

class person()

:def

__init__

(self,name=

"anonymous"):

#預設值引數

self.name = name

self.age =

18#直接為屬性賦值

defprint_name

(self)

:print

(self.name)

在直接為賦值時,也可以像其它程式語言宣告屬性一樣,將賦值的語句放到init方法之前(外)。但一般例項屬性寫在init方法內,而類屬性寫在外。

4、修改屬性

在程式執行過程中,物件的屬性經常需要發生變化,這就需要修改物件的屬性。

● 直接修改屬性

對於未加 _ 或 __ 修飾的屬性,可以在類外直接訪問。由此我們可以直接對他賦值進行修改。

person_1.name =

"micheal"

#改名person_1.print_name(

)#output:micheal

這種方式雖然很簡單,但是破壞了類的封裝性,可能在使用時引發意外錯誤。

● 通過方法修改屬性

對於使用了 _ 或 __ 修飾的屬性,只能通過類的方法修改屬性。當然,對未修飾的屬性也可以使用這個方式。

class

person()

:#新增方法

defchange_name

(self,name)

: self.name = name

person_1.change_name(

"micheal"

)person_1.print_name(

)#output:micheal

出於類的封裝性和操作的安全性的角度考慮,通常使用這種方式。

閉關日記 Day10

小雨。我想想怎麼寫,先挖坑。d 確認4.1 考科目三,估計過幾天要開始練車了。晚上去工作室敲 剛好看到他們在筆試,明天就是我筆試了,祝一切順利 專案f的電鋸聲識別,開始用比較勉強的方式實現,算是折衷吧,迫於時間,暫時如此,精準的識別想來是我目前做不出來的,如果畢設做這個,倒是也可以好好研究一些聲音方...

python學習 day10 推導式

定義 以下內容僅供個人學習使用,侵刪 usr bin env python coding utf 8 推導式 編寫一些有規律性的 列表推導式 字典推導式 集合推導式 生成器表示式 lst for i in range 1,11 print lst 推導式,從右向左走 1.普通迴圈模式 print i...

寒假學習day10

今天學習了為linearlayout設定分割線。很多介面開發中都會設定一些下劃線,或者分割線,從而使得介面更加整潔美觀,比如下面的酷狗 的註冊頁面 對於這種線,我們通常的做法有兩種 直接在布局中新增乙個view,這個view的作用僅僅是顯示出一條線,也很簡單 android layout width...