Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:列出可调用对象?_Python_Callable - Fatal编程技术网

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
做得更好。