8.20 通过字符串调用对象方法
问题
你有一个字符串形式的方法名称,想通过它调用某个对象的对应方法。
解决方案
最简单的情况,可以使用 getattr()
:
另外一种方法是使用 operator.methodcaller()
,例如:
当你需要通过相同的参数多次调用某个方法时,使用 operator.methodcaller
就很方便了。 比如你需要排序一系列的点,就可以这样做:
讨论
operator.methodcaller()
创建一个可调用对象,并同时提供所有必要参数, 然后调用的时候只需要将实例对象传递给它即可,比如:
通过方法名称字符串来调用方法通常出现在需要模拟 case
语句或实现访问者模式的时候。
Last updated
Was this helpful?