打印 eval 无法从字符串打印变量
Print eval not working to print variable from string
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 语句来完成此操作,但它看起来非常 clunky/not 超级可读。
有人有什么建议吗?
Nvm 我刚刚意识到我犯了有史以来最愚蠢的 python 3 个错误 - 写 print
而不是 print()
import random
class ddx:
micro = ["iron deficiency (late)", "chronic disease (late)", "thalassemias", "sideroblastic anemia", "lead poisoning"],
normo = ["normo"],
macro = ["macro"]
new=ddx()
anemiaType = random.choice(["micro", "normo", "macro"])
#print(anemiaType)
print(eval('new.'+anemiaType))
这对我有用
当您想使用 eval 时,10 次中有 9 次通常有更安全的方法。 Eval 将 运行 任何任意代码,因此当有更好、更安全的方法时,这绝不是一个好主意。在这种情况下你想访问一个class的属性,所以你可以使用getattr
import random
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(getattr(ddx, anemiaType))
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 语句来完成此操作,但它看起来非常 clunky/not 超级可读。
有人有什么建议吗?
Nvm 我刚刚意识到我犯了有史以来最愚蠢的 python 3 个错误 - 写 print
而不是 print()
import random
class ddx:
micro = ["iron deficiency (late)", "chronic disease (late)", "thalassemias", "sideroblastic anemia", "lead poisoning"],
normo = ["normo"],
macro = ["macro"]
new=ddx()
anemiaType = random.choice(["micro", "normo", "macro"])
#print(anemiaType)
print(eval('new.'+anemiaType))
这对我有用
当您想使用 eval 时,10 次中有 9 次通常有更安全的方法。 Eval 将 运行 任何任意代码,因此当有更好、更安全的方法时,这绝不是一个好主意。在这种情况下你想访问一个class的属性,所以你可以使用getattr
import random
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(getattr(ddx, anemiaType))