I don't understand how this works. If the lookup fails, then won't the `tp_getattro` have raised an exception, that we then need to call `PyErr_Clear` to get rid of? (The usual symptom of such orphan exceptions is that they end up getting raised from some random nearby point in the code, the next time we return to the bytecode interpreter loop and it gets around to checking for raised exceptions.)