Python кажется запрещает вам назначить атрибут внутреннего самого высокого уровня «объекта»:питон не может установить атрибуты встроенного/расширения типа «объект»
object.lst=lambda o:list(o)
Или
func=lambda o:list(o)
setattr(object,'lst',func)
Все генерируют сообщения об ошибках. Любые причины конструкции? Честно говоря, это странно, поскольку все является объектом, и вы можете определить func(obj)
, как хотите, так что если func не ограничивает тип аргумента, почему метод метода запрещен для добавления? obj.func()
- это точно func (obj), если вы назначаете func как атрибут object
. Поскольку все является объектом, атрибут объекта является глобальной функцией почти по определению.
В любом случае, чтобы прогуляться?
В принципе, если у вас есть возможность добавить некоторые функции к встроенным типам, вы можете выполнить программирование в стиле трубопровода: obj.list().len().range()
, и я думаю, что читаемость этого типа программы очень ясна и ничего не пифонического.
Смотрите также: http://stackoverflow.com/questions/6738987/extension-method-for-python-built-in-types – senshin
@senshin, эта надстройка точно назначает атрибут внутреннему объекту, если вы положите его в ответ, то я могу принять его в качестве ответа. – NathaneilCapital
Не стесняйтесь отвечать на вопрос самостоятельно - вы знаете, что ищете лучше, чем я. – senshin