我试图创建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();
}
答案 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