为什么这个简单的python类不起作用?

时间:2009-10-21 21:15:55

标签: python class list

我正在尝试创建一个可以获取数字列表的类,然后在需要时将其打印出来。我需要能够从类中生成2个对象以获得两个不同的列表。这是我到目前为止所拥有的

class getlist:   
    def newlist(self,*number):
        lst=[]
        self.number=number
        lst.append(number)

    def printlist(self):
        return lst

对不起,我不是很清楚,我对oop有点新意,请你帮助我,因为我不知道我做错了什么。感谢。

2 个答案:

答案 0 :(得分:7)

在Python中,当您在对象内部编写方法时,您需要使用self为所有对该对象的变量的引用添加前缀。 - 像这样:

class getlist:   
    def newlist(self,*number):
        self.lst=[]
        self.lst += number #I changed this to add all args to the list

    def printlist(self):
        return self.lst

之前的代码是创建和修改名为lst的局部变量,因此它似乎在调用之间“消失”。

此外,通常会创建一个具有特殊名称__init__

的构造函数
class getlist:   
    #Init constructor
    def __init__(self,*number):
        self.lst=[]
        self.lst += number #I changed this to add all args to the list

    def printlist(self):
        return self.lst

最后,像这样使用

>>> newlist=getlist(1,2,3, [4,5])
>>> newlist.printlist()
[1, 2, 3, [4,5]]     

答案 1 :(得分:3)

您应该使用“self.lst”而不是“lst”。没有“自我”,它只是当前方法的内部变量。