作者StubbornLin (Victor)
看板Python
标题Re: [问题] 有关Class 的__Init__
时间Thu Oct 18 20:22:17 2007
※ 引述《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