Re: [問題] 再請教一個問題
※ 引述《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
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章