Итак, у меня есть такой код:
locations = [0,1]
class Draw:
def __init__(self, locations):
self.locations = locations
def platforms(self):
print(self.locations)
Draw.platforms(locations)
И терминал мне дает:
AttributeError: 'list' object has no attribute 'locations'
Есть ли особый способ передать список в качестве аргумента? Я новичок и не понимаю, почему он работает с аргументом int, но не со списком.
Я хочу знать, почему это происходит, и что я могу с этим поделать.
Заранее спасибо.






Вы вызываете метод «платформы», который не ожидает, что вы передадите ему параметр, а передаете ему параметр. Список «местоположений» фактически передается методу конструктора вашего класса, который вызывается при его создании. Ваш "платформенный" метод вызывается без параметров и выводит его.
Вот как вам (вероятно) следует это сделать:
locations = [0,1]
class Draw:
def __init__(self, locations):
self.locations = locations
def platforms(self):
print(self.locations)
draw = Draw(locations)
draw.platforms()
Не стоит беспокоиться. Кроме того, как и прежде, весь смысл классов состоит в том, чтобы создавать объекты для представления вещей в вашем коде. То, как вы называете вещи, довольно странно. У вас есть класс под названием «Draw» (глагол) и метод под названием «platform» (существительное). Что, вероятно, имеет больше смысла, так это назвать класс после существительного и назвать метод после глагола. Платформы класса, метод draw. Классы - это объекты. Методы - это действия, которые нужно выполнить с этими объектами. Надеюсь это поможет
В данный момент вы вызываете platforms([0, 1]), который затем пытается разрешить [0, 1].locations. Вот что вам говорит ваша ошибка: list не имеют locations.
Вам нужно создать объект Draw с аргументом списка. Затем вы можете вызвать метод platforms этого объекта:
draw = Draw(locations)
draw.platforms()
Это можно сделать с помощью так называемого статический метод.
locations = [0,1]
class Draw:
def __init__(self, locations):
self.locations = locations
@staticmethod
def platforms(variable):
print(variable)
Draw.platforms(locations)
[0, 1]
locations = [0, 1]
class Draw:
def __init__(self, locations):
self.locations = locations
def platforms(self):
print(self.locations)
Draw(locations).platforms()
Draw(locations).platforms()