namedtuple sets __slots__ to an empty tuple, which is specifically to avoid creating a __dict__ for the sake of memory optimisation. This means that it does not and cannot have __dict__ by its very design. You cannot assign __dict__, or define any new fields for that matter when __slots__ is present.
This does not apply to derived classes, though, so you can do:
CBase = namedtuple('C', ['x', 'y'])
class C(CBase):
__dict__ = property(CBase._asdict)
print C(1, 2).__dict__