创建一个具有"列表创建的类"方法和"附加到列表"方法?

时间:2014-06-16 23:49:45

标签: python list class

我正在尝试创建一个可以处理字符串到列表转换的类,并且还能够添加到创建的列表中。但是我不知道该怎么做。如果我为班级提供一份已经准备好的清单并且有一个"追加"功能,一切正常:

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()

在第二种情况下,我看不到实际附加的列表。为凌乱的代码道歉,但我希望我能够说明这个想法。我确信每次创建实例时都会出现重置或丢失的事实。

感谢。

1 个答案:

答案 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 = [...]解决您的问题