Получение атрибутов модели, сгенерированной swagger, с помощью интроспекции в python - PullRequest
0 голосов
/ 05 июля 2018

У меня есть модель, сгенерированная редактором 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 (), так как он представлен в виде строки.

...