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