的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