我正在尝试"猴子补丁" 列表的一个实例.请注意,这不是我的清单.我无法控制它的创作.据我所知,这在2.7中是不可能的.我对吗?是否有可能在3.x?
不,您不能在list
对象上添加或删除属性,不能在Python 2中添加或删除,也不能在Python 3中添加或删除.
最好你可以将这样的对象包装在另一个实例中,一个实现与列表相同的属性和方法,但将访问权限传递给包装的列表对象.
该包装器可以用UserList.UserList()
类实现:
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)'