>>> import ast
>>> open("foo.py", "r").read()
'\nclass FooHandler(list):\n pass\n'
>>> parsed = ast.parse(open("foo.py", "r").read())
>>> parsed
<_ast.Module object at 0x10b36c650>
>>> parsed._fields
('body',)
>>> parsed._fields[0]
'body'
>>> parsed._fields['body']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: tuple indices must be integers, not str
>>> parsed.__dict__
{'body': [<_ast.ClassDef object at 0x10b43d950>]}
>>> parsed['body']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Module' object has no attribute '__getitem__'
>>> parsed.body
[<_ast.ClassDef object at 0x10b43d950>]
>>> parsed.body[0]
<_ast.ClassDef object at 0x10b43d950>
>>> parsed.body[0]._fields
('name', 'bases', 'body', 'decorator_list')
>>> parsed.body[0].bases
[<_ast.Name object at 0x10b43d990>]
>>> parsed.body[0].bases[0]._fields
('id', 'ctx')
>>> parsed.body[0].body._fields
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute '_fields'
>>> parsed.body[0].body
[<_ast.Pass object at 0x10b43d9d0>]
>>> parsed.body[0].bases[0]._fields
('id', 'ctx')
>>> parsed.body[0].bases[0].id
'list'