我有一个字符串列表 my_list,其中包含 n 个项目。 该列表在运行时逐个输入字符串。 假设现在有 4 个项目。
示例:my_list = ['一', '二', '三', '四']
我有一个名为 my_object 的自定义对象,我需要使用循环创建它的实例,用于列表中的每个项目。
我的问题:
通常,我将对象创建为:**my_obj** = MyObj()
并且我可以使用 my_obj 变量来获取它并调用它的方法等。
因为我需要通过列表操作动态地进行创建;
- 如何创建对象实例?
- 如何获取对象实例并调用其方法?
我知道它很旧,可能是错误的和过时的,但在 VisualBasic 中,对于可视项目,这可以像这样执行:
my_obj[dyanmic_variable] = ...
我不希望这涉及全局变量或任何东西变得复杂。
我该如何处理这个问题?
更多上下文:
*我正在使用 Qt (PySide - PyQt) 开发应用程序。 我有一个定制的小部件(my_class) 我需要用这个对象的动态创建实例填充一个可视化列表 (QGridLayout),然后调用它们的方法。*
谢谢。
显示我正在创建对象并尝试使用它们的代码:
class my_class(object):
def __init__(self):
print 'hi'
def talk(w):
print w
my_list = ['one', 'two']
### code that won't work starts from here
for i in list:
i = my_class()
my_list[1].talk()
最佳答案
你只是说你想创建一个没有名字的对象列表吗?只需做这样的事情:
myObjs = [MyObj() for i in range(5)]
然后您可以使用myObjs[0]
、myObjs[1]
等访问每个对象
另请阅读 the Python tutorial熟悉在 Python 中创建类实例、列表等的基础知识。
编辑:您在评论中描述的内容(创建具有给定名称的变量)不是一个好主意。创建一个动态变量名是没有意义的,因为你不能在不知道变量名是什么的情况下在代码中使用它。最好使用列表或字典。对于 dict,您可以执行以下操作:
myObjs = {}
theName = getNameSomehowFromUser()
myObjs[theName] = MyObj()
然后根据需要经常执行此操作,将新对象添加到名为 myObjs
的字典中。
关于python - 我怎样才能取回一个类的动态创建的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13996397/