__qualname__ при создании класса через type.__prepare__ -> exec -> type
В Python3 (v3.8) при создании класса через type.__prepare__ -> exec -> type получаемые атрибутами класса атрибуты __qualname__ соответствуют обычным атрибутам __name__:
class A():
def f(self):
pass
print(A.f.__qualname__) # -> A.f
body_code = """
def f(self):
pass
"""
attrs = type.__prepare__(type, 'A', ())
exec(body_code , globals(), attrs)
print(attrs['f'].__qualname__) # -> f
A = type('A', (), attrs)
print(A.f.__qualname__) # -> f
Как лучше всего поступить при создании класса из текста тела класса (в рамках концепции type.__prepare__ -> exec -> type) чтобы получить в итоге корректные __qualname__?