__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__?


Ответы (0 шт):