我正在尝试“猴子补丁”列表的实例。请注意,这不是我的 list 。我无法控制它的创作。据我所知,这在 2.7 中是不可能的。我对吗?在 3.x 中可以吗?
最佳答案
不,您不能在 list
对象上添加或删除属性,Python 2 和 Python 3 都不能。
您最多可以将这样的对象包装在另一个实例中,该实例实现与列表相同的属性和方法,但将对这些对象的访问传递给包装的列表对象。
可以使用 UserList.UserList()
class 实现该包装器:
try:
# Python 2
from UserList import UserList
except ImportError:
# Python 3
from collections import UserList
class ListWrapper(UserList):
def extra_method(self):
return """Hi! I'm an extra method on this "list" (wink, wink)"""
演示:
>>> some_list = ['foo', 'bar', 'baz']
>>> wrapped_list = ListWrapper(some_list)
>>> len(wrapped_list)
3
>>> wrapped_list[1]
'bar'
>>> wrapped_list.extra_method()
'Hi! I\'m an extra method on this "list" (wink, wink)'
关于python - 是否可以向 Python 列表实例添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34698199/