python - 我怎样才能取回一个类的动态创建的对象?

标签 python qt python-2.7 pyqt pyside

我有一个字符串列表 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/

相关文章:

python - 从十进制格式的字符串中提取基数和指数以 10 表示

c++ - QSystemTrayIcon 并不总是出现

c++ - 字符串到 float 的转换和格式化

qt - 如何通过拖动来旋转qml矩形?

python - Numpy savez 异常

python - 将 <> 运算符转换为 python3

python - 导入错误符号未找到 : __PySlice_AdjustIndices

python - ‘_io.TextIOWrapper’没有属性 'replace'

python - 有没有办法在 BigQuery 中对时间序列数据重新采样?

python - 程序在 pycharm 中完美运行,在终端中运行时给出错误答案