Я пытаюсь создать класс, который получит список чисел, а затем распечатает их, когда мне нужно. Мне нужно иметь возможность сделать 2 объекта из класса, чтобы получить два разных списка. Вот что у меня есть до сих пор
class getlist:
def newlist(self,*number):
lst=[]
self.number=number
lst.append(number)
def printlist(self):
return lst
Извините, я не очень понимаю, я немного новичок в oop, не могли бы вы помочь мне, потому что я не знаю, что делаю неправильно. Спасибо.
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]]
Вы должны использовать "self.lst" вместо "lst". Без «я» это просто внутренняя переменная текущего метода.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.