Я изучаю Python и в настоящее время взламываю класс с переменным количеством полей, как в Пример "Bunch of Named Stuff" здесь.
class Bunch:
def __init__(self, **kwds):
self.__dict__.update(kwds)
Я также хочу написать __setattr__
в этом классе, чтобы проверить имя входного атрибута. Но в документации Python говорится:
Если __setattr__() хочет присвоить значение атрибуту экземпляра, она не должна просто выполнять «self.name = value» — это вызовет рекурсивный вызов самого себя. Вместо этого он должен вставить значение в словарь атрибутов экземпляра, например, «self.__dict__[имя] = значение». Для классов нового стиля вместо доступа к словарю экземпляра следует вызывать метод базового класса с тем же именем, например, «object.__setattr__(self, name, value)».
В таком случае, должен ли я также использовать object.__dict__
в функции __init__
для замены self.__dict__
?