關於Python的類別(Class)...基本篇 - 張凱喬- Medium
文章推薦指數: 80 %
關於Python的類別(Class)...基本篇 · Animal(dog) print a.who #-> dog. 沒有甚麼特別的,只是要注意使用函式def 跟屬性時要在位置上加上self,這樣子呼叫 ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite關於Python的類別(Class)...基本篇我覺得Class是Python速成班最重要的一環因為一般我們在寫Python時一定會用到模組(package)而模組為了有架構的呈現功能一定是好由幾個py檔組成這些py檔裡面再用class及def結構化所以class跟def是組成模組功能的最低架構這邊用三個簡單實例先帶大家認識一下class類別class類別,就是像一個模組,可以產出具有相似特性的實體(物件)也有人會說他像是一個蛋糕模子,可以一直套用生產蛋糕底下我們會舉動物的例子他們都會有相同的"屬性"、不同的"參數"譬如,他們都會有"名字"、"物種"的屬性每隻動物對應到這個屬性都會有一個特殊的值("參數")第一隻動物是名叫"Nico"(名字)的"狗"(物種)第二隻動物是名叫"Nana"(名字)的"貓"(物種)所以我有一個可以套用的類別就可以產生無限多隻動物,他們則都有自己的屬性參數在python裡,就是用class開宗明義定義一個類別名稱通常會用首字大寫的單字簡單範例1:建立基本屬性classAnimal():def__init__(self,name):self.name=namea=Animal("dog")#建立一個名叫dog的Animal實體(物件)print(a.name)用Animal開啟一個類別代表之後的大家都可以取用這個類別的設定達到避免重複設定函式的目的def__init__(self):這邊代表宣告時會自動執行的函式也就是宣告類別的"起手式"所以一般會拿來放基礎的屬性設定如上面的簡單範例1,在起手式添加了一個name屬性所以在創造實體時,都必須要給這個屬性一個參數才能成功創造實體補充說明class的概念是屬性集合,而不是所有物譬如說上面的範例是動物.名字意思是名字是動物的屬性所以你不能用王大明.鉛筆來解釋class的概念因為鉛筆不是王大明的屬性他只是王大明的所有物#上面不懂的話我再補充一個舉例譬如狗的話你可以新增他的類別classDog():屬性則是名字、年齡、血型、喜歡的食物等可以這樣加入屬性這邊用中文闡述def__init__的過程def__init__(self,名字,年齡)因為self是class本身所以第一個不用更動接下來再設定self.名字=名字self.年齡=年齡在這邊self.的設定就代表你之後可以用的class屬性所以我之後就可以用來福=Dog(來福,8)讓來福變成是一種dog類別的物件並且具有名字屬性跟年齡屬性所以print來福.年齡就會出現8簡單範例2:取用自己的屬性classAnimal():def__init__(self,name):self.name=namedefwho(self):returnself.namea=Animal(dog)printa.who#->dog沒有甚麼特別的,只是要注意使用函式def跟屬性時要在位置上加上self,這樣子呼叫函式時才會運作正常有一個特別的是如果變數不希望直接被取用則可以給兩條底線例如self.__nameclassAnimal():def__init__(self,name):self.__name=namea=Animal(dog)printa.__name#raiseerror這時候就會產生錯誤,因為__name不能直接讀取可以用來設定一些內部使用的函數(但不能保證外部無法讀取,只是必須透過一些迂迴方式)簡單範例3:互動案例-存款與取款classAccount:def__init__(self,number,name):self.number=numberself.name=nameself.balance=0defdeposit(self,amount):#存款動作:amount代表存入金額ifamount<=0:raiseValueError('mustbepositive')self.balance+=amountdefwithdraw(self,amount):#取款動作:amount代表取款金額ifamount<=self.balance:self.balance-=amountelse:raiseRuntimeError('balancenotenough')這邊的簡單例子,便是創造一個銀行戶頭然後銀行戶頭可以進行存款與取款的互動定義完class之後,就可以寫一些存取款動作acct1=Account(‘123–456–789’,‘Justin’)#開一個帳戶acct1.deposit(100)acct1.withdraw(30)print(acct1.balance)#餘額是70這邊補充一些__init__起手式的概念重要概念一:用__init__設定可以有些變化classAnimal():def__init__(self,name):self.name=namea=Animal("dog")print(a.name)延續簡單範例1,此時如果呼叫b=Animal()就會出錯,因為你沒有給他name的屬性classAnimal():def__init__(self,name=default):self.name=namea=Animal(‘動物’)print(a.name)可以先給一個預設值,這樣第一次呼叫就不用給屬性如果是固定的值,呼叫時也不用給了,直接設定就好classAnimal():def__init__(self):self.password=123456a=Animal()當然,也是可以是空的,之後再新增資料就好classAnimal():def__init__(self):self.data=[]a=Animal()a.data.append(123456)重要概念二:__init__並不是必要的簡單來說,pythonclass自由度很高你也可以這樣,直接給屬性,不透過__init__classAnimal():name="dog"#把參數寫在init外面def__init__(self):passa=Animal()printa.name需要屬性時,我不見得一定要在init裡設定也不見得一定要在class裡設定,就像下面這樣classAnimal():def__init__(self):passa=Animal()a.name="dog"#自己給屬性與參數printa.name可以在使用Animal這個類別之後,再自己新增屬性#REF松崗出版黃建庭老師https://sites.google.com/site/zsgititit/home/python-cheng-shi-she-ji/python-lei-bie碁峯出版林信良老師https://openhome.cc/Gossip/Python/Class.htmlMorefrom張凱喬Follow數位轉型Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstarted張凱喬1.7KFollowers數位轉型FollowHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 15 Python進階教學2 - iT 邦幫忙
def 副程式a(self, 參數...): 副程式區塊... return 傳回值# 使用類別 # 建立物件,把類別放到變數裡,變成物件(使用時不用加 ...
- 2Python的物件與類別 - HackMD
Python的物件與類別## Python以物件(object)的方式看待、處理資料Python是一種`物件導向程式語言`,從資料、變數到函式,都被視為「物件」(Object)來處理,物件包含.
- 3Python類別與例外- 高中資訊科技概論教師黃建庭的教學網站
(A) 類別. 類別像是一個蛋糕的模子,這個蛋糕的模子可以重複製作出相同的蛋糕,就像類別可以宣告出相同的物件,可以讓程式不斷地被重複利用。在Python使用class宣告 ...
- 4關於Python的類別(Class)...基本篇 - 張凱喬- Medium
關於Python的類別(Class)...基本篇 · Animal(dog) print a.who #-> dog. 沒有甚麼特別的,只是要注意使用函式def 跟屬性時要在位置上加上self,...
- 5[Day 12] 從零開始學Python - 物件與類別:我們不一樣 - iT 邦幫忙
[Day 12] 從零開始學Python - 物件與類別:我們不一樣,每個人都有不同的際遇(上) ... 在Python中會使用ord(),也就是order,將一個字元轉成對應的ASCII Code;