如何在类实例存储在数组

时间:2017-12-31 22:23:09

标签: python arrays oop

我在python中启动了面向对象的编程,在我的程序中,我决定将类实例存储在数组中,但我现在不知道如何访问类变量。

class apixel(object):
    def __init__(self):
        self.posx = random.randint(0, 300)
        self.posy = random.randint(0, 200)
    def do_i_exist():
        print("Yes i do!")

p = [apixel] * 10

for obj in p:
    obj.do_i_exist() #that works
    print(obj.posx)  #but that does not work

1 个答案:

答案 0 :(得分:5)

问题是你需要实际实例化对象,否则永远不会调用__init__

尝试:

p = [apixel() for _ in range(10)]

Per Craig的评论如下,列表推导会将构造函数调用10次,因此您可以获得10个独立的对象。

但是,apixel没有self.posx的原因是您的代码从未调用过构造函数。您没有创建类的实例列表,而是创建对类定义的引用列表

根据DanielPryden对您的OP的评论,您应该更改do_i_exist方法的签名以接受self,或将其注释为static

# as an instance method, which requires "self":
do_i_exist(self):
    ...

# as a static class method that is the same for all instances:
@staticmethod
do_i_exist():
   ... method body contains NO references to "self"