【发布时间】:2018-12-04 02:39:33
【问题描述】:
我正在尝试从一个列表中调用方法,该列表中填充了来自定义该列表的不同类的对象。
考虑以下几点:
class ObjectA(object):
def __init__(self, object_id):
self.id = object_id
def a_function(self):
return self.id
from ObjectA import ObjectA
class ObjectB:
def test():
object_1 = ObjectA(1) # passing the id
a_list = [ObjectA] # setting the list to be of type ObjectA (?)
a_list.append(object_1)
a_list[0].a_function() # Says I need to pass argument 'self'
这样的事情怎么可能发生?我知道我可以改为 a_list[0].id 并且它有效,但感觉不对。我更喜欢有 setter/getter。
编辑:我也知道,如果我像这样声明列表 a_list = [] 而不是 a_list = [ObjectA] 它也可以工作,但在这种情况下我无法访问自动完成的方法。
【问题讨论】:
-
像 Spyder 或 PyCharm 这样的 IDE 会在这种情况下处理自动完成。这不是您的代码的问题,而是您的编辑器的问题。
-
我正在使用 PyCharm,它会自动完成我上面编写的代码,但是代码无法运行它需要在方法中使用“self”。
-
阅读我的答案,ˋself 问题来自您的 `a_list = [ObjectA]ˋ。不要这样写。
标签: python python-3.x list object methods