Python中的__getitem__和__setitem__特殊方法
阿新 • • 發佈:2019-02-02
在Nova的原始碼中,基本上所有的類都繼承NovaObject,這些類可以直接以a[key]=value的方式給物件增加新的屬性並且通過a[key]的方式獲取物件屬性,這是因為在NovaObject中實現了兩個方法__getitem__和__setitem__。
下面是NovaObject的部分原始碼:
class NovaObject(object): ... def __getitem__(self, name): """For backwards-compatibility with dict-based objects. NOTE(danms): May be removed in the future. """ return getattr(self, name) def __setitem__(self, name, value): """For backwards-compatibility with dict-based objects. NOTE(danms): May be removed in the future. """ setattr(self, name, value)