Re: [問題] 有關Class 的__Init__
※ 引述《theee (系子)》之銘言:
: class Names:
: VERSION="1.0"
: AUTHOR="theee"
: def __init__(self, data=None):
: if data == None:
: data = []
: else:
: self.data_list.append = data
出錯的原因很簡單,因為data_list在這行
根本什麼東西都沒有,你對一個不存在的東西,去對它的成員做存取
當然會出錯,因為那是空中閣樓,一樓都還不在,不可能只蓋二樓
所以做法應該要先指派data_list再存取他的成員
照你這樣看,data_list應該是一個array
所以這樣寫
def __init__(self, data=None):
self.data_list = []
....
還有一個地方有問題就是,假設你的data_list是一個array
但是你卻指派它的append這個成員
self.data_list.append = data
我想你說的問題是出在這裡吧?
append通常是拿來加資料的,應該沒人拿來指派吧?
就算是你想改array的行為,也應該是繼承它而不是用這個方法
def add(self, name):
self.data_list.append(name)
像這裡就寫對了
: 我想將程式中name1 = Names()
: 直接改成name1 = Names("Hello")
: 我的想法是其他class觀念一樣 可以直接在建class時對constructor給值
: 但是在python一直會出錯?
: 是因為我還有一個self變數嗎?
: 是的話我該怎麼改 ? 還有self 不寫會怎樣嗎?
: 我照著範例寫可以跑 但我不知道self.data_list為什麼會過編譯
: 因為錯誤訊息是
: AttributeError: Names instance has no attribute 'data_list'
: 看起來是這個問題 但為什麼改成name1 = Names("Hello")就掛了
: 多謝各位
--
VICTOR工作室 | PTT遊戲設計版隆重開幕!
| 不管是新手老手,程式美工音樂企劃....
URL : http://www.kinmen.info/vic/ | 都歡迎來遊戲設計版參與討論 XD
| 戰略高手>
C/C++ | GameTopics>
Visual Basic 6.0 | GameDesign
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.217.42
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Python 近期熱門文章
PTT數位生活區 即時熱門文章