在python类中发现依赖API

时间:2013-11-18 00:53:35

标签: python dependency-injection inversion-of-control

在以下课程中:

class SomeClass(object):

  def __init__(self, somedependency):
     self._somedependency = somedependency

  def do_something(self):
     self._field = _somedependency.get_something()

是否有可能“知道”somedependency在运行时有一个名为get_something()的函数,就像在编译时知道C#中构造函数参数的公共方法和属性一样?

编辑:我想获得somedependency的成员,并为这些成员创建一个新类型,所以我需要执行一些操作,例如“我是在调用类中调用此构造函数参数的方法和属性。给我所有那些方法和参数,因为这些在调用类中可见“。由于我不知道构造函数参数的类型,因此我无法以静态语言的方式确定这一点。

1 个答案:

答案 0 :(得分:0)

如果您只想验证是否存在已知方法,请使用func = getattr(_somedependency, 'get_something'); if func: func()

如果您想要更多检查,例如类或实例具有哪些方法,请查看内置的inspect module