Python inspect.getmembers 不return 所有会员?
Python inspect.getmembers does not return all members?
这是 inspect.getmembers 中的错误,还是预期的行为?
torch.bmm in inspect.getmembers(torch)
False
这不是错误;这是 inspect.getmembers
做的正是它记录要做的事情:
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))
...或者您可以将列表转换为字典并进行搜索:
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
这是 inspect.getmembers 中的错误,还是预期的行为?
torch.bmm in inspect.getmembers(torch)
False
这不是错误;这是 inspect.getmembers
做的正是它记录要做的事情:
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))
...或者您可以将列表转换为字典并进行搜索:
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