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

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

Сообщение Anonymous »

Мне нужно инициализировать все слоты экземпляра значением 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"]
но это кажется неоптимальным.

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

С уважением,

Ян>

Вернуться в «Python»