Получить все __slots__ производного класса

Мне нужно инициализировать все слоты экземпляра с помощью None. Как мне получить все слоты производного класса?

Пример (который не работает):

class A(object):
    __slots__ = "a"

    def __init__(self):
        # this does not work for inherited classes
        for slot in type(self).__slots__:
            setattr(self, slot, None)

class B(A):
    __slots__ = "b"

Я мог бы использовать дополнительный атрибут класса, который содержит слоты (включая унаследованные) для всех классов, например

class A(object):
    __slots__ = "a"
    all_slots = "a"

    def __init__(self):
        # this does not work for inherited classes
        for slot in type(self).all_slots:
            setattr(self, slot, None)

class B(A):
    __slots__ = "b"
    all_slots = ["a", "b"]

, но это кажется неоптимальным.

Любые комментарии приветствуются!

Ура,

Ян

15
задан Knack 16 July 2011 в 22:46
поделиться