That's true, but the same *could* be said about the existing
optimizations for objects that define their own __contains__.
No, because there isn't a __not_contains__, so you cannot define the inverse operation differently. "not a in b" and "a not in b" have exactly the same effects.