我正在尝试创建一个可以处理字符串到列表转换的类,并且还能够添加到创建的列表中。但是我不知道该怎么做。如果我为班级提供一份已经准备好的清单并且有一个"追加"功能,一切正常:
class EnvObj(object):
def __init__(self, envVariable):
self.envVariable = envVariable
def appendElement(self, newElement):
self.envVariable.append(newElement)
def listElements(self):
return self.envVariable
initList=['APPLE', 'CAR', 'HOUSE', 'PEN', 'CAT']
myEnvObj = EnvObj(initList)
print "Initial List:"
print myEnvObj.listElements()
print "Adding a new element"
myEnvObj.appendElement('BANANA')
print "A new listElements() request:"
print myEnvObj.listElements()
print "Adding a new element"
myEnvObj.appendElement('MILK')
print "A new listElements() request:"
print myEnvObj.listElements()
所以这可行,在每个appendElement()阶段之后,我可以看到列表增长得很好。但是,当我尝试创建一个创建列表然后处理追加的方法时,一切都开始分崩离析。
envVariableList = []
class EnvObj(object):
def __init__(self, envVariable):
self.envVariable = envVariable
def elementList(self):
envVariableList = self.envVariable.split(":")
return envVariableList
def appendElement(self, newElement):
envVariableList.append(newElement)
def listElements(self):
return self.elementList()
tmpString="APPLE:CAR:HOUSE:PEN:CAT"
myEnvObj = EnvObj(tmpString)
myEnvObj.elementList()
print "Initial List:"
print myEnvObj.listElements()
print "Adding a new element"
myEnvObj.appendElement('BANANA')
print "A new listElements() request:"
print myEnvObj.listElements()
print "Adding a new element"
myEnvObj.appendElement('MILK')
print "A new listElements() request:"
print myEnvObj.listElements()
在第二种情况下,我看不到实际附加的列表。为凌乱的代码道歉,但我希望我能够说明这个想法。我确信每次创建实例时都会出现重置或丢失的事实。
感谢。
答案 0 :(得分:1)
您错过了方法中的self
:
def elementList(self):
self.envVariableList = self.envVariable.split(":")
return envVariableList
def appendElement(self, newElement):
self.envVariableList.append(newElement)
您所做的只是创建一个新变量,并在致电myEnvObj.elementList()
时将其返回。它没有在对象1中实例化它。使用self.myvar = [...]
解决您的问题