【发布时间】:2020-10-21 13:54:01
【问题描述】:
class ddx:
micro = ["iron deficiency (late)", "chronic disease (late)", "thalassemias", "sideroblastic anemia", "lead poisoning"],
normo = ["normo"],
macro = ["macro"]
anemiaType = random.choice(["micro", "normo", "macro"])
print eval('ddx.' + anemiaType)
假设 random.choice 是“微”
我希望能够打印 ddx.micro
我知道我可以创建一大堆 if/else 语句来完成此操作,但它看起来很笨重/不是超级可读。
有人有什么建议吗?
【问题讨论】:
-
为什么不
print(choice([ddx.micro, ddx.normo, ddx.macro])[0])? -
好主意!但这只是相关代码的一个 sn-p - 我正在使用它是 micro、normo 还是 macro 来确定许多事情。
-
我建议避免使用 eval,因为它的运行字符串是没有保护的代码。相反,我会使用 getattr 来安全地获取属性
print(getattr(ddx, anemiaType)) -
getattr(ddx, anemiaType)
标签: python variables printing eval