У меня есть модель, сгенерированная редактором swagger, и я хотел бы получить ее атрибуты с помощью самоанализа / отражения, а также найти их типы. Затем я хотел бы сделать что-то на основе типа атрибутов.
Функция, которую я написал для этого:
def getting_attributes(Model1):
for name in dir(Model1):
attr = getattr(Model1,name)
if not callable(attr):
print(name,':',attr)
getting_attributes(test_model)
Это работает нормально, но тогда я не могу написать оператор if для получения типа attr.
Атрибуты моделей, которые я получаю, выглядят так:
__dict__ : {'swagger_types': {'name': <class 'str'>, 'rdfs_label': <class 'str'>, 'rdfs_comment': <class 'str'>, 'has_a_b_c': typing.List[swagger_server.models.a_b_c.ABC], 'has_d_e_f': typing.List[swagger_server.models.d_e_f.DEF],.......}
'attribute_map': {'name': 'name', 'rdfs_label': 'rdfs.label',
'rdfs_comment': 'rdfs.comment', ....}
'_name': 'Test_model', '_rdfs_label': None, '_rdfs_comment': None,...}
Когда я пытаюсь найти типы этих атрибутов, используя print(name,":",type(attr))
, я получаю большинство из них как <class 'NoneType'>
. Любые идеи о том, как найти, является ли атрибут списком типов, типом моей модели или типом питона (то есть строка, целое число, дата ...)?
p.s: Я не могу сделать attr.items (), так как он представлен в виде строки.