Why is `checked` being created here?  First, the variable name sounds like a boolean to me (i.e. "were the values validated?") so I had to read the code carefully to see what's going on.  But `_validate_angles` doesn't ever change `value` (or `self` if `value is None`), and instead the only action that method can take is to raise a `ValueError`.

So it would make more sense to me to just leave the original where `_validate_angles` doesn't return anything.  Then you don't have to create a new variable `checked`, and the method name would correspond to exactly what it does.

Also, in this current form if you have an Angle object `a` and do `a[2] = None` then it ends up actually trying to set `a[2] = a`.  Not good.