今天是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方法的首尾雙下劃線表示這是乙個系統定義的名字。在寫自定義的方法時避免使用這種命名法。
此外還有單下劃線開頭和雙下劃線開頭的屬性和方法。1、建立例項單下劃線開頭類似 protected 修飾,僅自身類物件和子類物件可以訪問。
雙下劃線開頭類似 private 修飾,僅自身類物件可以訪問。
在使用時,可以通過名稱改編的形式繞過封裝訪問這兩種型別的屬性和方法,但良好的程式設計習慣是不要在外部使用它。
建立例項的方式為:首先指定變數名,再像使用函式一樣使用類名,引數為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...