Блог о програмировании и программистах

Чем больше всматривашься в код, тем больше код всматривается в тебя

400 потрясающих бесплатных сервисов

400 сервисов на все случаи жизни - перейти

Кратко о метаклассах в Python

О работе с метакласами по порядку:

1)Простой пример создания метакласса:

# coding=utf-8
class AttributeInitType(type):
    def __call__(self, *args, **kwargs):
        """Вызов класса при котором создается новый объект. """
        #создаем сам объект
        obj = type.__call__(self, *args)
        #добавляем нашему классу переданные атрибуты
        for name in kwargs:
            setattr(obj, name, kwargs[name])
        # вернем готовый объект
        return obj

....

Интересные особенности работы со словарями

Пишу про то, с чем непосредственно самому приходилось работать

1)Подсчет элементов в списке:

from collections import defaultdict
d = defaultdict(int)
color_list = ['red','black','red','blue']
for color in color_list:
    d[color] += 1
#{'blue': 1, 'black': 1, 'red': 2}
print d

2)Соединение двух списков в один словарье:

from itertools import izip
names = ['raymond', 'rachel', 'matthew']
colors = ['red', 'green', 'blue']
d = dict(izip(names, colors))
# {'matthew': 'blue', 'rachel': 'green', 'raymond': 'red'}
print d

Код авторизации под пользователя

Можно вставить в любой контролер и исполнении зайти уже авторизованным:


from django.contrib.auth.models import User
u = User.objects.get(id=3)
backend = get_backends()[0]
u.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
login(request, u)\