понедельник, 17 марта 2014 г.

Philips Xenium 1560

Вот в руках этот потомок великих... Ну радио без гарнитуры самое приятное :)

понедельник, 10 марта 2014 г.

Python. Добавить метод к классу.

Вот случилось так, что взял стороннюю либу на проект. И вот прямо таки захотелось мне добавить пару методов к model.py. Тут вариантов было два, дописать прямо в код библиотеки или же как-то "пропатчить" либу.
В принципе первый вариант не плох, как бы даже хороший, но сразу надо помнить, что это уже не та самая либа и с апдейтами будут проблемы.

А как же сделать простой патч.
А для этого есть в питоне такая либа как types. Доку сами помучаете, я же краткий код покажу

from some.model import SomeClass # экспортирую класс который буду патчить
import types

def some_mtd(self):
     # do something

SomeClass.some_method = types.MethodType(some_mtd, None, SomeClass)

Вот таким не хитрым способом все новые инстансы класса получат метод some_method, который привязан к функции some_mtd.

Простой monkey patch и со вкусом, но иногда без него будет крайне тяжело.