python - 如何获取类中链接的方法的名称?
问题描述
考虑以下代码示例,该示例显示了一个简单的类,该类允许通过返回 self 来链接方法。
import inspect
class classname(object):
def __init__(self):
self.hold = None
def funcname(self):
self.hold = 'a'
return self
def method(self, c):
self.hold = self.hold * c
return self
c = classname().funcname().method(10)
我正在尝试做的是以c
某种方式进行检查,以便我可以看到funcname
并method
在这堂课上被召唤。
解决方案
它可以完成,但不能通过inspect
,因为实例本身不记得那个历史。您必须添加代码来手动维护调用。
class classname(object):
def __init__(self):
self.hold = None
self.calls = []
def funcname(self):
self.hold = 'a'
return self
def method(self, c):
self.hold = self.hold * c
return self
def __getattribute__(self, name):
self_calls = object.__getattribute__(self, "__dict__")["calls"]
self_calls.append(name)
return object.__getattribute__(self, name)
c = classname().funcname().method(10)
print(c.calls)
推荐阅读
- ruby - 我在 Ruby on Rails 中使用关联时遇到问题
- ffmpeg - ffmpeg:[NULL @ 0x5578f5fc0580] 无法为 '[out]' [out] 找到合适的输出格式:参数无效
- wordpress - Letsencrypt、nginx-proxy wordpress 和 docker 问题
- dll - libxml2 依赖项,但是当程序启动时,它要求使用 mingw32 编译的 libxml2-2
- automation - 开发人员调查,估计架构师/开发人员设置基本软件架构、系统安全和集成所花费的时间
- sql - SQL 代码仅获取平均价值高于所有产品的全球平均价格的产品
- rust - 如何在 Rust 中使用 cargo-raze 为 Bazel 生成包 BUILD 文件?
- javascript - 如何停止执行直到函数完成
- python - 将 Python 函数脚本导入另一个 Python 文件?
- typescript - 我们如何在 pulumi 中仅使用多个 kubernetes 配置中的 1 个配置