Как получить все атрибуты в python для класса, наследуемого от named_tuple

У меня есть класс Python, который я наследую от именованного кортежа. Я добавляю еще один атрибут к его экземпляру

from collections import namedtuple
class Test(namedtuple("Test", ('a', 'b', 'c', 'd', 'e'))):
     pass
T = Test(1,2,3,4,5)
T.list = [ 1,2,3,4,5,6,7,8]

Итак, T имеет 6 атрибутов: a,b,c,d,e,list. Есть ли способ распечатать все атрибуты с помощью одной команды? «T.__dict» дает мне только атрибут «список». «T.__fields» дает мне все поля namedtuple.

Я не думаю, что полностью понимаю, что делает наследование от namedtuple.


person patronus    schedule 20.07.2017    source источник
comment
Если вы хотите сами управлять полями, почему бы просто не наследоваться от tuple напрямую?   -  person Daniel Pryden    schedule 20.07.2017
comment
namedtuple использует слоты   -  person PM 2Ring    schedule 20.07.2017


Ответы (1)


Использование команды dir(T) распечатает все атрибуты (включая встроенные атрибуты класса) T.

from collections import namedtuple
class Test(namedtuple("Test", ('a', 'b', 'c', 'd', 'e'))):
     pass
T = Test(1,2,3,4,5)
T.list = [ 1,2,3,4,5,6,7,8]
print dir(T)

выход:

['добавить', 'класс', 'содержит', 'delattr', 'dict ', 'документ', 'eq', 'формат', 'ge', 'getattribute', 'getitem', 'getnewargs', 'getslice', 'getstate< /strong>', 'gt', 'хэш', 'init', 'iter', ' le', 'len', 'lt', 'модуль', 'mul strong>', 'ne', 'новый', 'reduce', 'reduce_ex', '< strong>repr', 'rmul', 'setattr', 'sizeof', 'slots', 'str', 'subclasshook', '_asdict', '_fields', '_make', '_replace', 'a', 'b', ' c', 'количество', 'd', 'e', ​​'индекс', 'список']

person Cary Shindell    schedule 20.07.2017