python - Python反射,方法的getter
问题描述
class A:
def __init__(self):
self.var = 10
def print(self):
print("hiiiiii")
对于 A 的对象,我们可以使用getattr
和轻松访问属性setattr
。Python中有没有办法拥有一个类的实例和一个方法名并间接调用它,比如:
MagicalMethod( A(), "print" )
然后为我打印“hiiiiii”。
解决方案
那将是getattr
:
>>> getattr(A(), 'print')()
hiiiiii
(请注意,您仍然必须调用的返回值getattr
;您可以定义一个包装器来为您执行此操作:
def MagicalMethod(obj, name, *args, **kwargs):
return getattr(obj, name)(*args, **kwargs)
)
operator.methodcaller
提供了一种稍微不同的间接方式。
>>> from operator import methodcaller
>>> f = methodcaller('print')
>>> f(A())
hiiiiii
推荐阅读
- sql - 尝试使用 CASE WHEN 和 ISNUMERIC
- html - 如何在不向下推 div 的情况下将三个 div 对齐在一起
- c - gtk_window_new 中的段错误
- huggingface-transformers - DISTILBERT_BASE_UNCASED 加载失败 - 拥抱脸变压器
- python - 一些列错误
- javascript - 将选定的对象拉出数组以创建另一个对象数组
- opencv - 我正在尝试制作 59 分钟和 59 秒的视频,但创建的视频总是持续时间较短
- swift - 如何在 SwiftUI 中将内容添加到收藏夹列表中?
- python - 如何使用 BeautifulSoup 循环链接并抓取新闻文章的内容
- powerapps - 使用下拉列表中的选定项目在 Power Apps 中显示项目