Jor*_*alo 4 callable python-2.7
假设我有一个这样的课程
class MyClass(AnotherClass):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def f(self):
#dostuff
Run Code Online (Sandbox Code Playgroud)
我有字符串"我的班级"
str = "my class"
Run Code Online (Sandbox Code Playgroud)
我可以做这个:
class_name_from_str = str.title().replace(" ", "") # now class_name_from_str is "MyClass"
Run Code Online (Sandbox Code Playgroud)
我怎么能让class_name_from_str可调用?我想要这样的东西:
callable_obj = some_process(class_name_from_str)
o = callable_obj(arg1, arg2)
o.f()
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我正在使用Python 2.7
更新:正如Matti Virkkunen在评论中建议的那样,一个好的解决方案是创建一个dict来映射字符串和类
my_calls_dict = {'my class' : MyClass, 'my other class' : MyOtherClass}
Run Code Online (Sandbox Code Playgroud)
这取决于你的班级所在的位置.如果它在当前模块中
globals()[class_name]
Run Code Online (Sandbox Code Playgroud)
应该让你上课.如果它在模块中,则将globals()替换为模块(可能通过以下方式导入__import__()- 如果您希望模块名称也是动态的).
这是考虑这是否是一个好主意的好时机.例如,制作一个名字和相应类别的词典会不会更清楚?如果你的.title().strip()东西是你的实际代码的一部分,我真的不能想到它可能会尝试做什么.
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |