gpt4 book ai didi

python - 从没有字典的字符串中形成一个变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:47 25 4
gpt4 key购买 nike

这可能有点重复,但我还没有找到适合我需要的解决方案。

我有一个构建 django-tables2 的函数。我将 model_class 的参数作为字符串传递。现在可以是“应用程序”、“数据库”或“项目”,但最终会有更多。为了配置表格,我设置了:

table = DatabaseTable(assets)

我希望能够传入 model_class,以便该表根据它获得的输入类型是动态的。像这样的东西:

table = model_class + Table(assets)(伪)

我不想对字典进行硬编码,因为我不确定最终会添加多少值。我看到有人建议使用 exec,但这些建议都被其他用户威胁要谋杀这些人的家人。

最佳答案

这个问题在堆栈上被问过很多次,答案总是一样的:当你想在名称和对象之间建立关联时,最明显的方法是使用字典。

I don't want to hardcode the dictionary as I'm not sure how many values will eventually be added.

所以你想避免这样的情况

lookup = {'application': ApplicationTable, 
'database': DatabaseTable,
'item': ItemTable}

因为您不想维护查找,对吗?这很好,但是没有必要为了动态检索对象而硬编码这样的字典。

如果您的 eval 像上面所说的那样工作,那么范围内的这些名称如 ApplicationTableItemtable 等必须是来自某处。因为我不知道它们在哪里被定义以及新的将出现在哪里,我会假设它们是从某个名为 MyTables

的模块导入的
from MyTables import ApplicationTable, Itemtable, BlahTable ...

这里的技巧是使用模块本身的 dict(读取:命名空间)。

import MyTables
my_string = 'item'
table = getattr(MyTables, my_string.capitalize() + 'Table')

关于python - 从没有字典的字符串中形成一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21865543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com