查看完整版本: 關於python,class的問題,麻煩有空的前輩指點(已解決,感謝各位前輩)
頁: [1]

chialewang 發表於 2019-8-6 09:22 PM

關於python,class的問題,麻煩有空的前輩指點(已解決,感謝各位前輩)

本帖最後由 chialewang 於 2019-8-8 11:33 AM 編輯

各位前輩 您們好:

關於以下的程式寫法,它是本來就是種制式的寫法?
還是有別的?

#self參數是對class本身的引用,用於屬於該class類別的變數
class cul_ticket:
    def __init__(self,order,fund,people):
        self.order=order
        self.fund=fund
        self.people=people
    def info(self):
        print("訂購人:"+str(self.order)+" 共買了"+str(self.people)+"張門票 總金額"+str(self.fund*self.people)+"元");
data=cul_ticket("Jialiang",200,5)
data.info()
data2=cul_ticket("Mary",700,3)
data2.info()


麻煩有空的前輩指點一下 感恩
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

codewice 發表於 2019-8-7 12:54 AM

「self參數是對class本身的引用」這句似乎不太對,也有可能是我對這句的理解跟你想表達的不一樣

首先要區分 class 跟 instance

以前初學物件導向的時候,看書上的一個比喻很傳神。做紅龜粿的時候會有個模子(粿印?),把糯米餡料塞進去,嘣嘣敲幾下,就是一個紅龜粿,重複幾次就會有好幾個紅龜粿。

雖然在系統層級的實作面來看,這樣講並不精確,但你可以這麼想像:粿印就是 class,照著粿印生出來的紅龜粿就是 instance。你可以在每次生成 instance 的時候塞進不同的餡料,拿到看起來很像但是內容有點不一樣的粿

data=cul_ticket("Jialiang",200,5)  // 用 cul_ticket 這個模,做一個叫做 data 的粿
data2=cul_ticket("Mary",700,3)   // 用 cul_ticket 這個模,做另外一個叫 data2 的粿

self 不是指向 class,而是指向當下的 instance

data.info()  // 這時候 self 是 data
data2.info()  // 這時候 self 是 data2

但我不懂你問的「制式寫法」指的是什麼。不過 def __init__ 是制式寫法沒錯

https://docs.python.org/3/reference/datamodel.html#basic-customization...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chialewang 發表於 2019-8-8 11:33 AM

codewice 發表於 2019-8-7 12:54 AM static/image/common/back.gif
「self參數是對class本身的引用」這句似乎不太對,也有可能是我對這句的理解跟你想表達的不一樣

首先要區 ...

codewice 前輩 您好:

感謝您的詳細說明,我了解了

同時我就是要問的是
這一大串是否就是制式的寫法

class cul_ticket:
    def __init__(self,order,fund,people):
        self.order=order
        self.fund=fund
        self.people=people
    def info(self):
        print("訂購人:"+str(self.order)+" 共買了"+str(self.people)+"張門票 總金額"+str(self.fund*self.people)+"元");
data=cul_ticket("Jialiang",200,5)
data.info() #呼叫函式
data2=cul_ticket("Mary",700,3)
data2.info()

看您這麼一說,我懂了
感謝您的回覆 感恩...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]