2024-10-05 14:29:31 发布
网友
我想知道是否可以创建一个方法列表。 例如,假设我有一个列表
lst = []
我想要一些具体的方法,比如insert,remove等等。我想从列表中随机调用它们,这样我就可以添加一些类似lst.add(3, 4)的东西,但是从方法列表中选择方法。这很傻,但我想这样做:lst.listofmethods[3]
insert
remove
lst.add(3, 4)
lst.listofmethods[3]
也许,这些方法应该存储在字典中?你知道吗
有两件事突然出现在我的脑海里:
dir(..)返回方法的名称的列表。然后可以使用getattr(..)获取侦听给定名称的属性。例如:
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),可以使用:
append
getattr(lst,dir(lst)[34])('a')
您可以构建如下方法列表:
listofmethods = [lst.append,lst.clear]
然后叫它:
listofmethod[1]()
调用列表上的clear()。你知道吗
clear()
当然,您也可以定义一个几乎等效的字典:
dicofmethods = {'foo':lst.append,'bar':lst.clear}
打电话给:
dicofmethods['foo'](42)
您也可以将函数存储到字典中。你知道吗
>>> 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> >>>
是的,您可以将函数存储在列表中,如下所示:
def f (): print ('f') def g (): print ('g') aList = [f, g] for aFunction in aList: aFunction ()
有两件事突然出现在我的脑海里:
dir(..)
返回方法的名称的列表。然后可以使用getattr(..)
获取侦听给定名称的属性。例如:因此,如果要调用
append
(索引34),可以使用:您可以构建如下方法列表:
然后叫它:
调用列表上的
clear()
。你知道吗当然,您也可以定义一个几乎等效的字典:
打电话给:
您也可以将函数存储到字典中。你知道吗
是的,您可以将函数存储在列表中,如下所示:
相关问题 更多 >
编程相关推荐