打印列表中存储的所有类实例

时间:2019-04-26 16:54:37

标签: python

我试图创建Name类的N个实例的列表,然后回调该实例的参数。我的代码如下。

我得到一个错误: 发生异常:AttributeError 'str'对象没有属性'get_name'

,不确定如何解决。有任何想法吗? 谢谢

 @Override
 public void onResponse(String response) {
    try {
           JSONObject api_response = new JSONObject(response);
           String message = api_response.getString("Message")
       } catch (JSONException e) {
            e.printStackTrace();           
       }

2 个答案:

答案 0 :(得分:3)

您没有将Name的实例追加到列表中,仅将名称作为字符串追加了。

请参见Name的构造函数中的这一行:

listName.append (self.name)

该行必须是

listName.append(self)

使代码正常工作。

也:

正如Patrick Artner在评论中指出的那样,listName[i].get_name不是函数调用。您必须添加括号才能调用函数,如下所示:

listName[i].get_name()

另一件事:

正如我刚刚学到的那样,您通过在listName的主体中声明了Name来使它成为一个类变量。您必须以Name.listName的身份访问它。不需要global listName语句。

答案 1 :(得分:0)

listName.append(self)是正确的。 使用get_name代替了get_name()。

class Name:
    global listName 
    listName = []

    def __init__(self,name):
        self.name = name
        listName.append (self)

    @property
    def get_name (self):
        print (self.name)

for i in range (10):
    Name(f"Name{i}")

for i in range (10):
    listName[i].get_name


Name0
Name1
Name2
Name3
Name4
Name5
Name6
Name7
Name8
Name9