如何显示特定类的所有方法,或** kwargs等函数?

时间:2014-02-01 05:30:38

标签: python methods kwargs

我尝试了帮助(** kwargs),并帮助(kwargs)但收到错误。

有些在线网站向您展示了字典的所有可用方法,但是对于像kwargs这样不那么新手友好的东西都没有。

我要求一个通用的方法来查找内置的python信息,这样我就不必在线询问这些问题了。感谢。

例如,

Edit_1,我是从其他人的代码中看到的:

def somefunction(**kwargs):
    for key, value in kwargs.item():
        print key, value

如何找到更多方法,如上例,item()?

3 个答案:

答案 0 :(得分:2)

*kwargs只是意味着一个方法需要多个未定义的关键字参数

举个例子:

def foo(a,b,c=10,**kwargs):
    pass

此方法有两个必需的位置参数,一个参数c是可选的(因为它有一个默认值),然后接受任意数量的附加参数。所有这些都是有效的电话:

foo(1,2,hello='world',bar='baz')
foo(1,2,3,hello='world',bar='baz',zoo='foo')

由于它们是可变的,因此无法列出它们。

您可以做的最好的事情是使用内置的help()函数,并希望程序员编写一些docstrings来突出显示您感兴趣的函数的使用:

def foo(a,b,c=10,**kwargs):
    '''This function takes extra arguments
       that can be used to calculate the
       meaning of life. The first two arguments
       a and b are required, c is set to 10 as
       a default.

       Examples:
           foo(1,2,hal='are you there?')'''

现在,当你执行help(foo)时,它会打印出该字符串。

dir()是另一种有用的内置功能。它返回传入对象的属性列表,或当前范围内可用的 names (变量)列表。

如果您想知道对象可以做的所有事情(基本上是.之后的内容),请键入dir(theobject)。例如,dir({})将列出字典的所有属性。

答案 1 :(得分:0)

如果您正在寻找内置模块的文档,此链接可能有所帮助:http://effbot.org/librarybook/builtin.htm。您的问题并不具体,如果您添加更多详细信息,那就太棒了。

答案 2 :(得分:0)

kwargs 只是一个名字,**用于解包词典(kew words argument)

注意:kwargs可以是你喜欢的任何名字

关于kwargs的一点点:

>>> def foo(**new_kwargs):
...     print new_kwargs
...
>>> dic = { 'key' : 'value' }    
>>> foo(**dic)
{'key': 'value'}
>>>
>>> foo(key='value')
{'key': 'value'}
>>>
>>> foo(dic)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() takes exactly 0 arguments (1 given)
>>>

并且:

如果要查看特定对象的所有属性和方法(即使类是python中的对象):使用dir built-in function

dir(...)
    dir([object]) -> list of strings

如果你想看到任何特定的属性是方法或函数,你可以使用callable来检查它们是否可以调用:

>>> dir(dict)
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__',
 '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__',
 '__hash__', '__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', 'viewitems', 'viewkeys', 'viewvalues']
>>>

>>> callable(dict.keys)
True
>>>   


>>> class foo(object):
...     class_variable = 'Some String'
...     def function():
...         return 'Some String'
...
>>> dir(foo)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
 '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', 
'__repr__',     '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 
'__weakref__', 'class_variable', 'function']
>>>
>>> callable(foo.class_variable)
False
>>> callable(foo.function)
True
>>>

你在dir(foo)中显示的额外内容来自基类object