正常方式:
import ham
ham.eggs.my_func()
ham.sausage.my_func()
Run Code Online (Sandbox Code Playgroud)
我多么想要它"动态"的方式:
str = 'eggs'
ham.str.my_func()
str = 'sausage'
ham.str.my_funct()
Run Code Online (Sandbox Code Playgroud)
同样的事情,但理想情况下我会如何在循环中使用它:
for x in ['eggs', 'sausage']
ham.x.my_func()
Run Code Online (Sandbox Code Playgroud)
基本上,我想要一个字符串告诉哪个类的my_func可以调用?
getattr(ham, x).my_func()
Run Code Online (Sandbox Code Playgroud)
这得到方法/事情(Python是鸭键入)从ham它被指定为他的名字叫的内容的属性x(如果x是'foo'的话,那将是ham.foo),然后调用my_func上
如果ham没有正确名称的方法,您将获得异常.
顺便说一句,你的例子ham.str.my_func()应该是getattr(ham, str).my_func().
如果你想以正确的方式真正做到这一点,你可以使用该imp方法只获取某种类型的成员,或使用额外的内省.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |