如何通过变量名引用模块?

2024-09-27 22:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个问题的措辞可能有点不恰当,但请允许我解释一下。这也是一个一般的python问题,但我使用一个特定的案例来解释它


[我正在使用一组样式表或来自dash_bootstrap_componentsthemes。现在我偶然发现了一个更一般的python问题,我一直在思考这个问题。您可以使用以下代码段设置Dash应用程序,其中最后一行指定了样式表:

from jupyter_dash import JupyterDash
import dash_bootstrap_components as dbc
app = JupyterDash(external_stylesheets=[dbc.themes.SLATE])

但是假设我想使用变量名而不是显式名称SLATE来分配主题-例如,当设置另一个样式表或让特定样式表成为用户选择的选项时。我如何循环模块或使用变量名而不是SLATE来选择主题

postHow to get a list of variables in specific Python module?显示了如何使用以下命令循环通过这样的模块:

[item for item in dir(dbc.themes) if not item.startswith("__")]

但我仍然需要选择主题。以下是我尝试过的一些事情:

myVar = 'SLATE'
themed_app = JupyterDash(external_stylesheets=[dbc.themes[myVar])

我确实意识到,这里的问题是缺乏对python的基本理解,但我真的很想知道为什么会失败,以及可以做些什么


Tags: 模块importapp主题componentsbootstrapitemthemes
2条回答

使用getattr动态访问属性

themed_app = JupyterDash(external_stylesheets=[getattr(dbc.themes, myVar)])

您可以使用eval作为另一种动态访问的解决方案

var = "SLATE"
sheet = f"dbc.themes.{var}"    
themed_app = JupyterDash(external_stylesheets=[eval(sheet)])

相关问题 更多 >

    热门问题