【问题标题】:Get Caller Class In Python在 Python 中获取调用者类
【发布时间】:2014-05-02 23:46:29
【问题描述】:

我有一个类调用另一个类的函数,像这样:

self.pool.get('some_value')

如何在 get 函数中获取调用者类?

谢谢,

【问题讨论】:

  • 你想要调用者类还是调用者对象?你为什么需要这个?还有为什么不能作为参数传入被调用函数(被调用者)?
  • 你的意思是调用者对象引用,对吧?还是您的意思是用于实例化调用者对象的实际类名?
  • 无论如何,这可能就是你想要的:stackoverflow.com/questions/17065086/…
  • @batbrat: 不行,函数用的太多了,不能再给函数加个参数了
  • @Lawrence:我想获取对象引用,这可能吗?谢谢

标签: python openerp


【解决方案1】:

您可以通过inspect 执行此操作。 get()函数的内容可以是:

import inspect
myCaller = inspect.currentframe().f_back.f_locals['self']

之后,您将拥有由myCaller 引用的调用者实例。

免责声明:这不是一个好的做法,因为它破坏了封装的全部意义。

【讨论】:

  • 很好的答案,尤其是免责声明。在您知道的任何情况下,这种方法是否有可能失败/中断?它看起来很标准,所以我想它不应该。
  • 谢谢。我不知道这种情况,但话又说回来,我避免使用这种解决方案,所以我没有对它进行广泛的测试。
  • Thx @Lawrence,我终于找到了我想要使用inspect 的类,但它似乎是一个性能猪,但我仍然会使用它。如果你有更好的解决方案,请告诉我,谢谢:)
  • 我想在本质上不是内部负载的代码/项目中通常应该避免它
猜你喜欢
  • 2013-11-09
  • 2013-06-08
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
相关资源
最近更新 更多