对于蟒蛇壳方法列表?(list of methods for python shell?)

2019-08-03 18:28发布

你会用我的术语我是一个Python的n00b的使用已经找到了。

直截了当的问题:

我怎样才能看到的特定对象的方法列表中的交互式Python外壳就像我可以在红宝石(你可以做,在内部评级法的红宝石与物体后”。方法)?

Answer 1:

现有的答案做你展示如何得到一个对象的属性的一个不错的工作,但不准确回答您提出的问题 - 如何获取对象的方法。 Python对象有(由红宝石,在方法和属性使用不同的命名空间不同)一个统一的命名空间。 例如,考虑:

>>> 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 ,定制的结果,您的精确,精确的需求。



Answer 2:

dir( object )

会给你的列表中。

例如:

a = 2
dir( a )

将列出了所有你能要求一个整数的方法。



Answer 3:

>>> help(my_object)


Answer 4:

其简单的为您所创建的任何对象做到这一点

dir(object)

它会返回对象的所有属性的列表。



Answer 5:

Python支持选项卡完成为好。 我喜欢我的Python提示符干净(所以没有感谢IPython的),但与tab完成。

设置在.bashrc或者相似的:

PYTHONSTARTUP=$HOME/.pythonrc

把这个.pythonrc:

try:
    import readline
except ImportError:
    print ("Module readline not available.")
else:
    print ("Enabling tab completion")
    import rlcompleter
    readline.parse_and_bind("tab: complete")

这将打印“选项卡启用完成”每个蟒蛇迅速启动时间,因为它是更好的是明确的。 这不会使用Python脚本和程序的执行干扰。


例:

>>> lst = []
>>> lst.
lst.__add__(           lst.__iadd__(          lst.__setattr__(
lst.__class__(         lst.__imul__(          lst.__setitem__(
lst.__contains__(      lst.__init__(          lst.__setslice__(
lst.__delattr__(       lst.__iter__(          lst.__sizeof__(
lst.__delitem__(       lst.__le__(            lst.__str__(
lst.__delslice__(      lst.__len__(           lst.__subclasshook__(
lst.__doc__            lst.__lt__(            lst.append(
lst.__eq__(            lst.__mul__(           lst.count(
lst.__format__(        lst.__ne__(            lst.extend(
lst.__ge__(            lst.__new__(           lst.index(
lst.__getattribute__(  lst.__reduce__(        lst.insert(
lst.__getitem__(       lst.__reduce_ex__(     lst.pop(
lst.__getslice__(      lst.__repr__(          lst.remove(
lst.__gt__(            lst.__reversed__(      lst.reverse(
lst.__hash__           lst.__rmul__(          lst.sort(


Answer 6:

为了增强版dir()检查see()

>>> test = [1,2,3]
>>> see(test)
    []    in    +    +=    *    *=    <    <=    ==    !=    >    >=    hash()
    help()    iter()    len()    repr()    reversed()    str()    .append()
    .count()    .extend()    .index()    .insert()    .pop()    .remove()
    .reverse()    .sort()

你可以在这里得到它:

  • http://pypi.python.org/pypi/see/0.5.4 (包装版)
  • http://inky.github.com/see/ (主页)
  • http://github.com/inky/see/tree/master (源)


Answer 7:

做这个:

dir(obj)


Answer 8:

其他人所说的dir 。 让我小心的一句话:Python对象可能有__getattr__定义的方法,当一个人试图打电话说对象的一个未定义的方法被调用。 显然, dir没有列出所有的(无限多)方法名。 一些库作出明确使用此功能,例如PLY (Python的莱克斯,Yacc的)。

例:

>>> class Test:
...     def __getattr__(self, name):
...         return 'foo <%s>' % name
...
>>> t = Test()
>>> t.bar
'foo <bar>'
>>> 'bar' in dir(t)
False


Answer 9:

如果你想只有方法,然后

def methods(obj):
    return [attr for attr in dir(obj) if callable(getattr(obj, attr))]

但不要尝试IPython的,它为对象的属性选项卡中完成,所以打字obj.<tab>会显示该对象的可用属性的列表。



文章来源: list of methods for python shell?