开发者

Why is this simple python class not working?

开发者 https://www.devze.com 2022-12-08 22:29 出处:网络
I\'m trying to make a class that will get a list of numbers then print them out when I need. I need to be able to make 2 objects from the class to get two different lists. Here\'s what I have so far

I'm trying to make a class that will get a list of numbers then print them out when I need. I need to be able to make 2 objects from the class to get two different lists. Here's what I have so far

class getlist:   
    def newlist(self,*number):
   开发者_如何学C     lst=[]
        self.number=number
        lst.append(number)

    def printlist(self):
        return lst

Sorry I'm not very clear, I'm a bit new to oop, can you please help me cos I don't know what I'm doing wrong. Thanks.


In Python, when you are writing methods inside an object, you need to prefix all references to variables belonging to that object with self. - like so:

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

The code you had before was creating and modifying a local variable called lst, so it would appear to "disappear" between calls.

Also, it is usual to make a constructor, which has the special name __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

Finally, use like so

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


You should use "self.lst" instead of "lst". Without the "self", it's just internal variable to current method.

0

精彩评论

暂无评论...
验证码 换一张
取 消