gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:54:03 25 4
gpt4 key购买 nike

我有一个类,我可以在其中动态添加新方法和属性。新属性通过覆盖 __getattr__ 和 __setattr__ 来处理,同时直接添加新方法 (obj.mymethod = foo)。如果我执行“help(inst)”(其中 inst 是我的类的一个实例),有没有办法让这些显示出来?现在我只看到我在源代码中“硬编码”的方法和属性。如果我执行“dir(inst)”,这些方法就会出现。

最佳答案

问题是 help(inst) 提供了有关实例“inst”派生自的类的信息。

假设 obj 是从类 A 派生的,那么如果你做的是 A.mymethod = foo,而不是做 obj.mymethod = foo,那么这将显示在 help(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() 中.

关于python - 在python帮助中显示动态添加的方法和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com