получить значение JSON - PullRequest
       1

получить значение JSON

0 голосов
/ 25 апреля 2018

У меня есть это:

alert = Alert(title=a,
          tlp=3,
          tags=tags,
          description='N/A',
          type='external',
          source='instance1',
          sourceRef=sourceRef,
          artifacts=artifacts)

И я хочу знать, как получить значение 'title', я пытался сделать это:

print(alert['title'])

но не работает:

TypeError: объект 'Alert' не может быть подписан

Есть идеи?

1 Ответ

0 голосов
/ 25 апреля 2018

alert - это объект Python. Вы должны использовать точечную запись (alert.title) вместо alert['title'].

С учетом сказанного, если по какой-то причине вы действительно заинтересованы в выполнении alert['title'], вы можете реализовать __getitem__ в Alert:

def __getitem__(self, item):
    return getattr(self, item)

Это самая базовая возможная реализация. Возможно, вы захотите позаботиться о случаях, когда item не существует (в настоящее время исключение будет распространяться на вызывающий код)

class Foo:
    x = 1

    def __getitem__(self, item):
        return getattr(self, item)


f = Foo()
print(f['x'])
# 1
print(f['y']
# AttributeError: 'Foo' object has no attribute 'y'

Одним из способов обработки отсутствующих атрибутов было бы использование аргумента 3 rd для getattr, который является значением по умолчанию в случае, если искомый атрибут не существует:

class Foo:
    x = 1

    def __getitem__(self, item):
        return getattr(self, item, None)


f = Foo()
print(f['y'])
# None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...