Це може дозволити повторне використання коду ще краще за звичайне OOP з наслідуванням.
Що найважливіше знати про Python? Те що код в блоці class
– це такий самий код як і в модулі, просто виконується в просторі імен модуля. І функції там звичайнісінькі.
А щоб перенести something
з простору імен класу в простір імен модуля, досить написати в класі просто something = something
. Ось так:
def say(self, what): print self.name, 'says', what class Human(object): def __init__(self, name): self.name = name print __init__ # <function __init__ at 0x7fdc3ba25758> say = say # here we move say into class namespace print say # <function say at 0x7fdc3bb1e1b8> me = Human('Bunyk') print me.say # <bound method Human.say of <__main__.Human object at 0x7fdc3ba2a310>> me.say('hello') # Bunyk says hello
Ще ми бачимо що метод стає прив’язаним до об’єкта, власне коли цей об’єкт створюється класом. А в класі це не метод, це просто функція собі.
Правда я подумав що вираз something = something
може спантеличити математиків і вони надовго задумаються над його значенням, і написав міксін, бо паттерни всі знають і люблять. :)
Filed under: Кодерство, Конспекти Tagged: Python
