05. Метапрограмиране

05. Метапрограмиране

05. Метапрограмиране

13 март 2013

Метапрограмиране

Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime.

Метапрограмиране

Мета-обектен протокол

В Python ще го срещнете като data model

Какво знаем до тук?

Време е да обясним как точно работят всички тези неща.

Дъндъри

Както знаете, всеки обект има такива неща, които са със специално значение за него.

__class__

Разни

__dict__

def spam(): pass
spam.foo = 8
print(spam.__dict__)
spam.__dict__['bar'] = 2
print(spam.bar)

Методи, обекти, класове и имена

Aтрибути

Достъпване на атрибути

class Foo:
    bar = 1
    def __getattribute__(self, name):
        if name == 'foo':
            return 8
        return super().__getattribute__(name)

    def __getattr__(self, name):
        return name

foo = Foo()
print(foo.bar)
print(foo.foo)
print(foo.baba)

Други операции с атрибути

__setattr__

__delattr__

Въпроси?