Я пытаюсь создать класс, который получит список чисел, а затем распечатает их, когда мне нужно. Мне нужно иметь возможность сделать 2 объекта из класса, чтобы получить два разных списка. Вот что у меня есть до сих пор

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

    def printlist(self):
        return lst

Извините, я не очень понимаю, я немного новичок в oop, не могли бы вы помочь мне, потому что я не знаю, что делаю неправильно. Спасибо.

3
Michael 22 Окт 2009 в 01:15
4
Отступы важны в Python, поэтому этот пример никогда не запустится. Пожалуйста, исправьте это, чтобы мы могли видеть, что вы пытаетесь сделать.
 – 
Daniel Roseman
22 Окт 2009 в 01:19
1
Зачем вам тут объекты, списков вам мало?
 – 
SilentGhost
22 Окт 2009 в 01:20
- хотя в целом это справедливо, Майкл, вероятно, делает игрушечную программу в качестве учебного упражнения.
 – 
Tom Leys
22 Окт 2009 в 03:16

2 ответа

В 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]]     
7
Tom Leys 22 Окт 2009 в 01:25

Вы должны использовать "self.lst" вместо "lst". Без «я» это просто внутренняя переменная текущего метода.

3
Harriv 22 Окт 2009 в 01:20
Это блестяще, кажется, разобрались, спасибо всем за помощь!
 – 
Michael
22 Окт 2009 в 12:14