【发布时间】:2014-01-23 21:45:06
【问题描述】:
Python 似乎不允许您将属性分配给“对象”的内部最高级别:
object.lst=lambda o:list(o)
或者
func=lambda o:list(o)
setattr(object,'lst',func)
全部生成错误消息。
背后有什么设计原因吗?老实说,这很奇怪,因为一切都是对象,你可以随意定义func(obj),所以如果func没有约束参数类型,那为什么方法方式被禁止添加呢?
如果您将 func 作为属性分配给object,obj.func() 正是 func(obj)。既然一切都是对象,那么对象的属性几乎可以定义为一个全局函数。
要不要到处走走?
基本上,如果你有能力为内置类型添加一些函数,你可以进行管道式编程:obj.list().len().range(),我认为这种类型程序的可读性非常清晰,没有什么非pythonic的。
【问题讨论】:
-
@senshin,这个插件确实将属性分配给内部对象,如果你把它放在答案中我可以接受它作为答案。
-
请随意回答这个问题 - 你比我更清楚你在寻找什么。
标签: python