Python - передача списка в качестве аргумента классу - PullRequest
0 голосов
/ 27 сентября 2018

Итак, у меня есть следующий код:

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, а не со списком.

Я хочу знать, почему это происходит, и что я могу с этим сделать.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

То, что вы делаете в данный момент, вызывает platforms([0, 1]), который затем пытается решить
[0, 1].locations.Вот что говорит ваша ошибка: list s не имеют locations.

Вам необходимо создать Draw объект с аргументом списка.Затем вы можете вызвать метод platforms этого объекта:

draw = Draw(locations)
draw.platforms()
0 голосов
/ 27 сентября 2018

Это можно сделать с помощью статического метода .

locations = [0,1]

class Draw:
    def __init__(self, locations):
        self.locations = locations

    def platforms(variable):
        print(variable)

Draw.platforms(locations)
[0, 1]
0 голосов
/ 27 сентября 2018

Вы вызываете метод «платформы», который не ожидает, что вы передадите ему параметр, и передаете ему параметр.Список «местоположений» фактически передается в метод конструктора вашего класса, который вызывается при его создании.Ваш метод «платформы» вызывается без параметров и печатает его.

Вот как (вероятно) вы должны это сделать:

locations = [0,1]

class Draw:
    def __init__(self, locations):
        self.locations = locations

    def platforms(self):
        print(self.locations)

draw = Draw(locations)    
draw.platforms()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...