在python帮助中显示动态添加的方法和属性

在python帮助中显示动态添加的方法和属性,python,Python,我有一个类,可以在其中动态添加新方法和属性。当直接添加新方法(obj.mymethod=foo)时,通过重写_getattr_uuu和_setattr_uuu来处理新属性。如果我使用“帮助(inst)”,其中inst是我的类的一个实例,那么有没有办法让它们显示出来?现在我只看到我在源代码中“硬编码”的方法和属性。如果我执行“dir(inst)”,则会显示这些方法。问题在于帮助(inst)提供了有关从中派生实例“inst”的类的信息 假设obj是从类A派生的,那么不做obj.mymethod=fo

我有一个类,可以在其中动态添加新方法和属性。当直接添加新方法(obj.mymethod=foo)时,通过重写_getattr_uuu和_setattr_uuu来处理新属性。如果我使用“帮助(inst)”,其中inst是我的类的一个实例,那么有没有办法让它们显示出来?现在我只看到我在源代码中“硬编码”的方法和属性。如果我执行“dir(inst)”,则会显示这些方法。

问题在于帮助(inst)提供了有关从中派生实例“inst”的类的信息

假设obj是从类A派生的,那么不做obj.mymethod=foo,如果你做了A.mymethod=foo,那么这将显示在帮助(obj)中

请看下面的示例及其输出

class A(object):
    def __init__(self):
        pass

    def method1(self):
        "This is method1 of class A"
        pass

a = A()
help(a)

def method2(self):
    """ Method 2 still not associated"""
    pass

A.method2 = method2 
# if you did a.method2 = method2
# Then it won't show up in the help() statement below

help(a)

根据文档,如果参数是任何其他类型的对象,将生成该对象的帮助页面。但是从上面的例子中,我看到在类的名称空间中添加方法显示在help()函数中,但是如果您只将方法添加到该类的一个实例中,那么它就不会显示在help()中。

您可以尝试在dir上面写一些解决方法来比较结果并找到新方法。Like new=set(dir(Class))-set(old_dir)