为什么这个简单的Python类不起作用?
我正在尝试创建一个类,这个类可以获取一组数字,然后在我需要的时候把它们打印出来。我希望能用这个类创建两个对象,以便得到两个不同的数字列表。以下是我目前的代码:
class getlist:
def newlist(self,*number):
lst=[]
self.number=number
lst.append(number)
def printlist(self):
return lst
抱歉,我说得不太清楚,我对面向对象编程还不太熟悉,能不能帮我一下,因为我不知道自己哪里出错了。谢谢。
2 个回答
3
你应该用“self.lst”而不是“lst”。如果不加“self”,那就是当前方法内部的一个变量。
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]]