Python中的__getitem__和__setitem__特殊方法

原创 2014年11月21日 11:01:50

在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)


python四个魔法方法__len__,__getitem__,__setitem__,__delitem__

python中除了可以使用内建的类型,如list,tuple,dict,还可以创建自己的对象来实现像这些内建类型的访问,不过需要在定义类的时候对一些魔法方法逐一实现。 如下: class DictDe...
  • yuan_j_y
  • yuan_j_y
  • 2013年07月13日 21:32
  • 18662

python总结(五):__get__、__getattr__、__getitem__、__getattribute__之间的差异与联系

python的一切数据都是对象,包括函数、基本数据类型、自定义数据类型等等,这其中最复杂的就是对象内部存储的数据结构(引用),包括类属性、数据描述符、实例属性及非数据描述符,不仅它们的优先级不一样,而...
  • yiifaa
  • yiifaa
  • 2017年09月23日 10:00
  • 2203

Python类的__getitem__和__setitem__特殊方法

一个有点绕的例子,用PyScripter调试器步进跟踪可以看清楚对 象结构的具体细节。 对原作改变了一下,在未定义子对象属性时__getitem__中使用现成的__setitem__来定义。 ...
  • liujianfei526
  • liujianfei526
  • 2016年02月04日 11:51
  • 2103

python中__getitem__, __setitem__, __delitem__的使用

参考: 伯乐地址用于索引操作,如字典。以上分别表示获取、设置、删除数据#Python __doc__ class C(object): """ Holy Shit What The Fuck ...
  • qianguozheng
  • qianguozheng
  • 2015年12月24日 20:48
  • 2398

详解Python魔术方法__getitem__、__setitem__、__delitem__、__len__

Python的魔术方法一般以__methodname__的形式命名,如:__init__(构造方法), __getitem__、 __setitem__(subscriptable所需method...
  • liwei825755184
  • liwei825755184
  • 2017年02月07日 11:24
  • 640

Python __setitem__()、__getitem__()、__delitem__() (十一)

__xxxitem__:使用 [''] 的方式操作属性时被调用 __setitem__:每当属性被赋值的时候都会调用该方法,因此不能再该方法内赋值 self.name = value 会死循环 ...
  • xhw88398569
  • xhw88398569
  • 2015年09月23日 22:33
  • 1486

pb函数setItem()

函数作用:给指定的数据窗口或者Datastore中的、指定单元设置数据,通过行和列来确定哪个单元。该函数直接修改缓冲区中的数据,而不是针对显示界面进行修改,修改成功之后,数据窗口控件上会自动反映出最新...
  • zhu5404
  • zhu5404
  • 2016年03月22日 16:12
  • 1668

Python中__init__(),__getitem__()和__setitem__()的使用实例

Python中__init__(),__getitem__()和__setitem__()的使用实例: class testc: __dv__ = {} #Dictionary valu...
  • rumswell
  • rumswell
  • 2013年10月25日 21:39
  • 3018

Python类的__getitem__和__setitem__特殊方法

>>> class testsetandget: kk = {}; def __getitem__(self, key): return self.kk[key]; def __setitem__(...
  • xxkkff
  • xxkkff
  • 2009年07月30日 21:13
  • 17547

Python中__getitem__()和__setitem__()的使用实例

使用如下:
  • u011653701
  • u011653701
  • 2015年06月03日 16:10
  • 436
收藏助手
不良信息举报
您举报文章:Python中的__getitem__和__setitem__特殊方法
举报原因:
原因补充:

(最多只允许输入30个字)