uuid
и username
являются просто атрибутами класса, поэтому они не относятся к словарю атрибутов экземпляра (obj.__dict__
), а относятся к классу dict (cls.__dict__
):
Код
mock_reporter_obj = type('DbUserObjMock', (object,), {
'uuid': 'test_uuid',
'username': 'test_username',
})
obj = mock_reporter_obj()
print(mock_reporter_obj.__dict__)
выход
{'uuid': 'test_uuid', 'username': 'test_username', '__module__': '__main__', '__dict__': <attribute '__dict__' of 'DbUserObjMock' objects>, '__weakref__': <attribute '__weakref__' of 'DbUserObjMock' objects>, '__doc__': None}
То же самое происходит, если вы объявляете класс как обычно:
код
class A:
a = 9
a = A()
print(A.__dict__)
print(a.__dict__)
выход
{'__module__': '__main__', 'a': 9, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
{}