当前位置:  开发笔记 > 编程语言 > 正文

python shell的方法列表?

如何解决《pythonshell的方法列表?》经验,为你挑选了4个好方法。

你已经通过术语的使用发现我是一个python n00b.

直截了当的问题:

我怎样才能在交互式python shell中看到特定对象的方法列表,就像我可以在ruby中一样(你可以在ruby irb中用对象后面的'.methods'来做到这一点)?



1> Alex Martell..:

现有的答案可以很好地向您展示如何获取对象的属性,但不能准确回答您提出的问题 - 如何获取对象的METHODS.Python对象具有统一的命名空间(与Ruby不同,其中方法和属性使用不同的命名空间).考虑例如:

>>> class X(object):
...   @classmethod
...   def clame(cls): pass
...   @staticmethod
...   def stame(): pass
...   def meth(self): pass
...   def __init__(self):
...     self.lam = lambda: None
...     self.val = 23
... 
>>> x = X()
>>> dir(x)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
 '__getattribute__', '__hash__', '__init__', '__module__',
 '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
 '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
 'clame', 'lam', 'meth', 'stame', 'val']

((输出拆分以便于阅读)).

正如你看到的,这是给你的所有属性的名称-其中包括大量的特殊的方法,这些方法只是从继承object,特殊的数据属性,如__class__,__dict____doc__,每个实例的数据属性(val),按实例可执行属性(lam)以及实际的方法.

如果您需要更具选择性,请尝试:

>>> import inspect
>>> [n for n, v in inspect.getmembers(x, inspect.ismethod)]
['__init__', 'clame', 'meth']

标准库模块inspect是在Python中进行内省的最佳方式:它构建在内置的内省钩子(例如dir更高级的内置钩子)之上,为您提供有用,丰富和简单的内省服务.例如,在这里,您看到只显示了由此类专门设计的实例和类方法 - 不是静态方法,不是可调用或不可调用的实例属性,而不是从中继承的特殊方法object.如果您的选择性需求略有不同,则可以轻松构建自己的调整版本ismethod并将其作为第二个参数传递getmembers,以根据您的精确,精确需求定制结果.



2> Jon W..:

dir( object )

会给你清单.

例如:

a = 2
dir( a )

将列出您可以调用整数的所有方法.



3> 小智..:
>>> help(my_object)


这实际上是不正确的。help用于显示方法的文档字符串文档。例如help(string.upper)。dir(obj)是必需的。

4> hj-007..:

对于您创建的任何对象,它都很简单

dir(object)

它将返回对象的所有属性的列表.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有