假设我们有几个不同的类:ClassA
、ClassB
、ClassC
和 ClassD
。我有一个变量,我会根据不同的情况设置。我提前知道它会是什么,但我不想每次需要更改它时都必须在不同文件中重写许多不同的代码行。它不是用户设置的。
所以现在我们有
变量 = ClassX
所以,假设我将 Variable
设置为 ClassA
。我怎样才能让它调用 ClassA
使用它?例如,我知道我可以这样做:
Variable = ClassA
if Variable == ClassA:
# Call ClassA and run it
elif Variable == ClassB:
# Call ClassB and run it
elif Variable == ClassC:
# Call ClassC and run it
elif Variable == ClassD:
# Call ClassD and run it
但是,我想做这样的事情:
Variable = ClassA
V = Variable()
这可能吗?
编辑: 更详细一点...
所以我有 3 个文件用于此场景。
文件1.py:
# Class = ClassA
# Class = ClassB
Class = ClassC
# Class = ClassD
...
if Class == "ClassA":
c = ClassSystem.ClassA
short_name = c.get_short_name()
elif Class == "ClassB":
c = ClassSystem.ClassB
short_name = c.get_short_name()
elif Class == "ClassC":
c = ClassSystem.ClassC
short_name = c.get_short_name()
elif Class == "ClassD":
c = ClassSystem.ClassD
short_name = c.get_short_name()
...
文件2.py:
from Folder.File1 import short_name
from Folder.ClassSystem import *
...
S = short_name()
S.get_information()
这似乎不起作用。 File2 正在引用 file1 中的变量。然后,我需要 File2 使用 File1 中的变量来运行 ClassSystem 中的同一个类。
最佳答案
是的,完全有可能。不过,最紧凑的方法不是使用 if
来实现,而是包含一个类名到类对象的字典。
然后您可以键入字典并调用生成的类:
cls_dict = {c.__name__: c for c in {ClassA, ClassB}}
v = 'ClassA'
cls_dict[v]()
当然,可以更改类集以包含您希望的任何其他对象。
关于python - 根据变量名运行不同的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47633133/