根据变量名称运行不同的类?

科迪知道了

比方说,我们有一些不同的类:ClassAClassBClassC,和ClassD我将根据不同的情况设置一个变量。我知道会提前做什么,但是我不想每次需要更改它时都不必在不同文件中重写许多不同的代码行。不是用户设置的。

所以现在我们有了 Variable = ClassX

因此,假设我设置VariableClassA我该如何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个在这种情况下使用的文件。

File1.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()
...

File2.py:

from Folder.File1 import short_name
from Folder.ClassSystem import *
...
S = short_name()
S.get_information()

这似乎不起作用。File2引用了file1中的变量。然后,我需要File2以使用File1中的变量在ClassSystem中运行相同的类。

Dimitris Fasarakis Hilliard

是的,完全有可能。if但是,最紧凑的方法不是使用s来实现,而是包括将类名字典到类对象。

然后,您可以键入字典并调用生成的类:

cls_dict = {c.__name__: c for c in {ClassA, ClassB}}
v = 'ClassA'
cls_dict[v]()

当然,可以将这组类更改为包含您希望的任何其他对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章