gpt4 book ai didi

Python:如何从 __getattr__ 函数中获取函数名称列表?

转载 作者:太空狗 更新时间:2023-10-29 23:59:53 25 4
gpt4 key购买 nike

如何从 __getattr__ 函数中获取类函数列表?

Python v2.7 如果重要的话。

尝试在 __getattr__ 中使用 dir 会导致无限递归。

class Hal(object):
def __getattr__(self, name):
print 'I don\'t have a %s function' % name
names = dir(self) # <-- infinite recursion happens here
print 'My functions are: %s' % ', '.join(names)
exit()
def close_door(self):
pass
x = Hal()
x.open_door()

这是我想要的输出:

I don't have a open_door function
My functions are: close_door, __getattr__, __init__, __doc__, ...

任何其他能得到我想要的输出的解决方案都可以正常工作。我想在函数不存在的情况下进行模糊字符串匹配,以尝试建议用户可能的意思。

最佳答案

你有什么理由不能这样做吗?

names = dir(self.__class__)

您是否希望消费者扩展 Hal 的实例以拥有自定义方法?

如果你只想要你已经实现的方法,没有列出内置函数,你也可以试试这个:

names = [prop for prop in dir(self.__class__) if prop[1] != "_"]

关于Python:如何从 __getattr__ 函数中获取函数名称列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866353/

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