Re: [問題] 再請教一個問題

看板Python作者 (殘雲奪月)時間17年前 (2008/04/27 19:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串8/8 (看更多)
※ 引述《purestone (天空之子)》之銘言: : 拜託各位高手指點一下.. : ----------------------------------------- : python 版: : #!/usr/bin/env python : # File name: class_init.py : class Person: : def __init__(self, name): : self.name = name : def say_hi(self): : print 'Hello, my name is', self.name : p = Person('Swaroop') : p.say_hi() : python 版輸出結果: : $ python class_init.py : Hello, my name is Swaroop : ----------------------------------------------- : 請問上述程式的__init__功能是什麼?我知道是初始化,但初始化是什麼? : self是有什麼涵義嗎?為什麼最後一個say_hi()沒有self? : 請問class的功能是什麼? : 拜託各位高手幫幫忙~我有在看書,但慧根不夠,需要有人用白話一點的方式指點一下~ 小弟來獻醜一下 這不是嚴謹的說法 類別,你就想成是一種資料形態 這個資料型態擁有屬性與方法 在你舉的例子中 他的屬性是self.name, 嚴謹的講是物件的屬性,所以不同的物件有不同的self.name 他的方法是say_hi() 方法是定義在類別裡的函數 他和一般函數不一樣的地方在 當你呼叫方法時,直譯器會傳自己到那個方法 你的例子p.say_hi()括號內並無東西 但是直譯器會把自己p傳到say_hi() 所以你在定義say_hi()時,才需要定義成say_hi(self) 你如果沒有這樣定義,而把他定義成say_hi() 會得到你多傳參數給say_hi()的錯誤 __init__()的作用像是建構子 當物件創造時,會先執行建構子一次 所以你可以利用它做一些初始化的動作 像設定物件屬性 希望對你有幫助 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.222.45
文章代碼(AID): #1856VZaf (Python)
文章代碼(AID): #1856VZaf (Python)