※ 引述《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的功能是什麼?
: 拜託各位高手幫幫忙~我有在看書,但慧根不夠,需要有人用白話一點的方式指點一下~
--
門外漢 http://aockc.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.134.104
※ 編輯: monomorium 來自: 118.169.134.104 (04/26 21:26)
小弟的一些見解供參考
用關鍵字class所定義出來的是使用者自訂的資料型態
所謂型態 其實可以當作是某一類東西(或稱物件)
在Python裡 整數、字串、list等都是一種型態
型態有如種類的說法 例如紙的種類有圖畫紙、西卡紙等
各種紙的性質可能不太相同
這裡寫程式的人定義一個叫做Person的型態(或稱類別)
其內除了定義初始化的屬性 還有定義say_hi的屬性(或稱方法)
所謂『初始化的屬性』是說
一旦寫程式的人要用這個新的類別
如他在底下 p = Person('Swaroop')
就是建立一個Person的型態 然後將其指派到p這個變數之中
至於 __init__ 是Python裡頭內建的用法
當建立新類別的同時 __init__會自動執行
在這裡是說當變數p被建立後
變數p同時也就有一個屬性 叫做p.name
所以如果這是引入到直譯器中 便可以用
print p.name
來看p.name的內容 結果會是
'Swaroop'
至於self 他本身就是自己的意思
在定義內 這是是指型態自己本身
當型態用變數建立後 self就是該變數的名稱
say_hi是這種型態裡頭的一種屬性(或稱方法)
用p.say_hi()來呼叫
就會去執行say_hi裡的陳述
這裡所謂的屬性 行話稱方法
方法的意義跟函數一樣
兩者的差別是方法是自訂型態中使用者自訂的
如list裡也有sort、pop等方法可用