Tested on 3.7, 3.8, 3.9 and 3.10 It appears that using `super()` in the class makes the class behave differently when traced: ```python import sys def tracer(frame, event, _): return tracer sys.settrace(tracer) class Foo: pass class FancyFoo: def bug(self): super() @property def __class__(self): return Foo assert isinstance(FancyFoo(), Foo) ``` Remove either the `def bug` or the `settrace` call and the assertion passes. Ref https://github.com/nedbat/coveragepy/issues/1382.