的Python似乎不允许您属性分配给“对象”的内部最高级别:Python不能设置内置/扩展型“对象”的属性
object.lst=lambda o:list(o)
或者
func=lambda o:list(o)
setattr(object,'lst',func)
全部生成错误消息。 背后的任何设计理由?老实说,这很奇怪,因为一切都是一个对象,你可以根据需要定义func(obj)
,所以如果func不是约束参数类型,为什么方法禁止添加呢? obj.func()
如果将func作为属性指定给object
,那么它正是func(obj)。由于一切都是一个对象,所以对象的一个属性几乎是按照定义的全局函数。
无论如何走动?
基本上,如果你有能力添加一些功能的内置类型,你可以做管道风格编程:obj.list().len().range()
,我认为这种类型的程序的可读性非常明确,没有任何非pythonic。
参见:http://stackoverflow.com/questions/6738987/extension-method-for-python-built-in-types – senshin
@senshin,这个加载项确实将属性赋值给内部对象,如果你把它放在答案中II可以接受它作为答案。 – NathaneilCapital
请随时自己回答这个问题 - 你知道你在找什么比我更好。 – senshin