我的问题是有点类似这一个 ; 它涉及对象的方法,而不是模块的内容。 我想知道我是否可以使用inspect
模块得到只有在我询问的类中定义的方法,而不是它的父(S)。
我需要这个,因为我的子类定义了“宏”的方法,它访问父的方法,在更高的抽象水平,我不希望用户不必担心定义一路继承较低级别的方法树。
下面是一个简化的例子:
class Foo(object):
def __init__(self): pass
def f1(self): return 3
def f2(self): return 1
class Bar(Foo):
def __init__(self): Foo.__init__(self)
def g1(self): return self.f1() + self.f2()
def g2(self): return self.f1() - self.f2()
import inspect
inspect.getmembers(Bar, inspect.ismethod)
输出:
[('__init__', <unbound method Bar.__init__>),
('f1', <unbound method Bar.f1>),
('f2', <unbound method Bar.f2>),
('g1', <unbound method Bar.g1>),
('g2', <unbound method Bar.g2>)]
用户不需要知道或关心的存在f
小号,因为她永远只能将是感兴趣的g
秒。 (当然,这个输出是有道理在绝大多数环境中,因为所有这些方法将被绑定到当它被实例化的对象。)在相当长的继承树,返回的列表可能会很长,充满东西AREN “T与用户相关。
我怎样才能得到它离开f1
和f2
关闭这个名单? 是否有一个相当于__module__
在类中定义的方法属性? 更妙的是,是否有可能用实例方法是一回事吗?