python - 从列表动态创建类实例
问题描述
我正在尝试从列表中创建一个类的新实例。一切似乎都有效,但如果我向列表中添加一个新值并创建一个新的app
类实例,我会得到KeyError
. 我不知道我是否必须完全放弃这条路,或者是否有解决方案。
class app:
def __init__(self):
self.app=None
def start_app(self):
return self.app.start()
def stop_app(self):
return self.app.stop()
def return_app(self):
return self.app
list=[123456,654321]
myapp = {k: app() for k in list}
print("1 my list: ",list)
print ("1 my app: ",myapp)
myapp[(list[0])].__init__
x=myapp[(list[0])].start_app
list.append(789000)
print("2 my list: ",list)
print ("2 my app: ",myapp)
myapp[(list[0])].__init__
print(myapp[(list[2])].start_app())
和错误:
1 my list: [123456, 654321]
1 my app: {123456: <__main__.app object at 0x7ff6916a53d0>, 654321: <__main__.app object at 0x7ff6916a5430>}
2 my list: [123456, 654321, 789000]
2 my app: {123456: <__main__.app object at 0x7ff6916a53d0>, 654321: <__main__.app object at 0x7ff6916a5430>}
Traceback (most recent call last):
File "/testCopia.py", line 25, in <module>
print(myapp[(list[2])].start_app())
KeyError: 789000
解决方案
当您运行 app() 时会创建类的实例app
,而您只是在分配给myapp
. 当你添加一个新的键list
(你应该使用不同的名字,这是一个现有的类型)时,你需要调用 app(),并且可能还添加新的 (kay, value) 对到 myapp.
推荐阅读
- c# - 有没有办法通过它的文本来获取标签页
- widget - KDE 小部件 - 图标大小和父项的问题
- spring-boot - Kafka 消费者动态获取主题
- json - “Mycart”类型的对象在 Django 中不是 JSON 可序列化的
- python - 从另一个列表中的数据创建列表
- jmeter - 无法通过运行 Jmeter 脚本来实现预期的吞吐量,因为预期的吞吐量更多但变得非常少
- javafx - 设置“快速”单击 - JavaFx
- php - 使用会话可以直接登录,无需在PHP中匹配电子邮件和密码
- stm32f4 - STM32F4 - 如何检测取出的电池
- c# - 如何将 function.json 添加到现有的 .NET 函数 2.0