Как получить все атрибуты в 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" дает мне только атрибут "list". "T.__fields" дает мне все поля namedtuple.

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

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 ', ' doc ', ' eq ', ' format ', ' ge ', ' getattribute ', ' getitem ', ' getnewargs ', ' getslice ',' getstate ',' gt ',' hash ',' init ',' iter ',' le ',' len ',' lt ',' module ',' mul ',' ne ',' new ', ' lower ', ' redu_ex ', ' repr ', ' rmul ', ' setattr ', ' sizeof ', ' slots ', ' str ', 'subclasshook', '_asdict', '_fields', '_make', ' _replace ',' a ',' b ',' c ',' count ',' d ',' e ',' index ',' list ']

Другие вопросы по тегам