Python:列出可调用对象?
我试图只列出可调用对象,但我似乎做错了什么。比如说,Python:列出可调用对象?,python,callable,Python,Callable,我试图只列出可调用对象,但我似乎做错了什么。比如说, >>> [m for m in dir({}) if callable(getattr({},m))] ['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__init__',
>>> [m for m in dir({}) if callable(getattr({},m))]
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
但是,这是错误的,例如,
{}.\uuuu doc\uuuu
显然是一个字符串,等等。我的列表理解有什么问题您编写的代码是最好的Python。您提到它是错误的,因为\uuuuuuu doc\uuuuuu
,但您的列表中不包括\uuuuuuuu doc\uuuuu
。我认为您已经有了可用的代码。您编写的代码是Python提供的最好的代码。您提到它是错误的,因为\uuuuuuu doc\uuuuuu
,但您的列表中不包括\uuuuuuuu doc\uuuuu
。我认为您已经有了工作代码。根据,您不应该信任函数的True
返回值,因为它可以为不可调用的对象返回True
。但是,如果它返回False
,它肯定是不可调用的。顺便说一句,在Python 2.7中,您的列表理解只返回可调用的对象。我不明白你说“这是错误的”并且提到了\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,但是你的清单中没有\uuuuuu。事实上,列表中的所有项都是可调用的,@yayu如果您想要一些不同的东西,就像类上的所有方法一样,您可以使用inspect
,做得更好。根据,您不应该信任函数的True
返回值,因为它可以为不可调用的对象返回True
。但是,如果它返回False
,它肯定是不可调用的。顺便说一句,在Python 2.7中,您的列表理解只返回可调用的对象。我不明白你说“这是错误的”并且提到了\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,但是你的清单中没有\uuuuuu。事实上,列表中的所有项都是可调用的,@yayu如果您想要一些不同的东西,比如类上的所有方法,您可以使用inspect
做得更好。