Six.iteritems(kwargs) и setattr, пояснить в коде?

Рейтинг: 1Ответов: 1Опубликовано: 21.01.2015
def __init__(self, **kwargs):

    for key, value in six.iteritems(kwargs):
        setattr(self, key, value)

Кто может пояснить действие этого куска кода в классе, а в особенности six.iteritems(kwargs) и setattr(self, key, value)?

Ответы

▲ 2Принят

Six - модуль для совместимости между Python 2 и 3.

six.iteritems(dictionary, **kwargs)

Returns an iterator over dictionary‘s items. This replaces dictionary.iteritems() on Python 2 and dictionary.items() on Python 3. kwargs are passed through to the underlying method.

Т.е. из dictionary.iteritems() переводит в dictionary.items() или на оборот и возвращает итератор.

setattr - переопределяет значение.

SetAttr (х, 'Foobar', 123) 
#эквивалентно 
x.foobar = 123.

Сделано это для совместимости между Python 2 и Python 3, чтобы не зависеть от версии.

Доки:

SetAttr

Six