Python-将列表作为参数传递给类

时间:2018-09-27 03:25:20

标签: python list class arguments

所以,我有以下代码:

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参数一起使用,但不适用于列表。

我想知道为什么会这样,我该怎么办。

谢谢。

4 个答案:

答案 0 :(得分:1)

您当前正在做的是呼叫platforms([0, 1]),然后尝试解决该问题
 [0, 1].locations。这就是您的错误告诉您的内容:list没有locations

您需要创建一个带有列表参数的Draw对象。然后,您可以调用该对象的platforms方法:

draw = Draw(locations)
draw.platforms()

答案 1 :(得分:0)

您正在调用方法“ platforms”,该方法不希望您将其传递给参数,而是将其传递给参数。实际上,“位置”列表将传递给您的类的构造方法,该方法在实例化它时会被调用。您的“平台”方法将不带参数地调用并打印。

以下是您应该(可能)执行的操作:

locations = [0,1]

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

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

draw = Draw(locations)    
draw.platforms()

答案 2 :(得分:0)

这可以通过所谓的静态方法完成。

locations = [0,1]

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

    def platforms(variable):
        print(variable)

Draw.platforms(locations)
[0, 1]

答案 3 :(得分:0)

locations = [0, 1]

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

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

Draw(locations).platforms()