Improve handling of attribute access on class objects (#14988)
Fixes #14056
#14056 was originally reported as a mypyc issue (because that's how it
presented itself to the user), but the underlying bug is really a bug to
do with how mypy understands metaclasses. On mypy `master`:
```py
class Meta(type):
bar: str
class Foo(metaclass=Meta):
bar: int
reveal_type(Foo().bar) # Revealed type is int (correct!)
reveal_type(Foo.bar) # Revealed type is int, but should be str
```
This PR fixes that incorrect behaviour.
Since this is really a mypy bug rather than a mypyc bug, I haven't added
a mypyc test, but I'm happy to if that would be useful. (I'll need some
guidance as to exactly where it should go -- I don't know much about
mypyc internals!)