方法清单

时间:2017-01-30 18:42:04

标签: python list methods

我想知道是否有可能创建方法列表(或其他东西)。 例如,假设我有一个列表

 lst = []

我希望有特定的方法,例如insertremove和其他内容。我想从列表中随机调用这些,以便我可以添加类似lst.add(3, 4)的内容,但从方法列表中选择方法。它很愚蠢,但我喜欢这样做:lst.listofmethods[3]

可能这些方法应该存储在字典中吗?

3 个答案:

答案 0 :(得分:3)

有两件事情会浮现在脑海中:

  • dir(..)会返回方法的名称列表。然后,您可以使用getattr(..)来获取侦听给定名称的属性。例如:

    >>> dir([])
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    

    因此,如果您想呼叫append(索引34),您可以使用:

    getattr(lst,dir(lst)[34])('a')
    
  • 您可以构建一个方法列表,如:

    listofmethods = [lst.append,lst.clear]
    

    然后用:

    调用它
    listofmethod[1]()
    

    在列表中拨打clear()

    当然你也可以定义一个几乎相同的词典:

    dicofmethods = {'foo':lst.append,'bar':lst.clear}
    

    并致电:

    dicofmethods['foo'](42)
    

答案 1 :(得分:3)

您也可以将函数存储到字典中。

>>> def foo():
...     print("foo")
... 
>>> def bar():
...     print("bar")
... 
>>> 
>>> foobar = {"foo": foo, "bar" : bar}
>>> foobar["foo"]()
foo
>>> foobar["bar"]()
bar
>>> foobar["bar"]
<function bar at 0x7f0561c6eae8>
>>> 

答案 2 :(得分:2)

是的,您可以将功能存储在列表中,如下所示:

def f ():
    print ('f')

def g ():
    print ('g')

aList = [f, g]

for aFunction in aList:
    aFunction ()