Python检查.getmembers不返回所有成员?

2024-04-26 10:18:53 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个窃听器吗检查.getmembers,或者这是预期的行为?你知道吗

torch.bmm in inspect.getmembers(torch)
False

Tags: infalsetorchinspectgetmembersbmm
1条回答
网友
1楼 · 发布于 2024-04-26 10:18:53

这不是一个bug;这是^{}完全按照文档所描述的方式执行:

Return all the members of an object in a list of (name, value) pairs sorted by name…

所以,('bmm', torch.bmm)可能在这样的列表中,但是torch.bmm不会


如果你想知道torch.bmm是否是torch的成员…那么,你已经知道了,或者torch.bmm会提出一个AttributeError。但您可以搜索每对的第二部分(值):

any(member == torch.bmm for name, member in inspect.getmembers(torch))

…或者您可以将列表转换为dict并搜索它:

torch.bmm in dict(inspect.getmembers(torch)).values()

但是,同样的,torch.bmm没有引发异常的事实已经足以告诉您它存在。如果您想处理它不存在的可能性,那么在获取该异常之后执行的任何检查都为时已晚;您只想处理该异常:

try:
    torch.bmm
except AttributeError:
    # whatever you wanted to do if it doesn't exist
else:
    # whatever you wanted to do with torch.bmm 

相关问题 更多 >