Python_67面向对象类之特殊成员setitem/getitem/delitem

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)
def __call__(self, *args, **kwargs):
print ('calll1111')



class Bar(FFF):
def fetch(self):
print ('bbbbar')

bbb=Bar()
bbb()
bbb['k1']
输出——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

Traceback (most recent call last):
File "D:/Users/Administrator/PycharmProjects/untitled/venv/yingshe/chengyuanxiushifu.py", line 22, in <module>
bbb['k1']=5
TypeError: 'Bar' object does not support item assignment
111
calll1111

这里的这个bbb['k1']这个报错,是因为没有调用添加成员的方法  __getitem__()

******************************************************************************************************************************************************************************************************************************************************************************

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)
def __call__(self, *args, **kwargs):
print ('calll1111')
def __getitem__(self, item):
print (item)



class Bar(FFF):
def fetch(self):
print ('bbbbar')

bbb=Bar()
bbb()
bbb['k1'] #中括号 默认执行 getitem方法 同理还有setitem delitem方法 这一套操作下来就是仿照字典的操作
输出——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

111
calll1111
k1

这里就可以了,不会报错了

*****************************************************************************************************************************************************************************************************************************************************************************

 

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)
def __call__(self, *args, **kwargs):
print ('calll1111')
def __getitem__(self, item):
print (item)
def __setitem__(self, key, value):
print (key,value)



class Bar(FFF):
def fetch(self):
print ('bbbbar')

bbb=Bar()
bbb()
bbb['k1']=123
输出——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

111
calll1111
k1 123

 

 

 

*****************************************************************************************************************************************************************************************************************************************************************************

 

#成员的种类 :普通字段  静态字段  普通方法   静态方法  类方法  普通特性
class FFF:
x='xxxxxdddd'
__x1='x11111111' #'__'就是成员修饰符,x1就是被修饰后的变量字段 私有的 只能在内部访问
def __init__(self):
print ('111')
self.__name='name222' #这个name依旧是那个私有的字段 依旧是不可被调用的
def fetch(self,bak):
print (bak)
print (FFF.__x1)
def __call__(self, *args, **kwargs):
print ('calll1111')
def __getitem__(self, item):
print (item)
def __setitem__(self, key, value):
print (key,value)
def __delitem__(self, key):
print ('delitem')



class Bar(FFF):
def fetch(self):
print ('bbbbar')

bbb=Bar()
bbb()
bbb['k1']=123
del bbb['k1']
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

111
calll1111
k1 123
delitem

 

 同样也有切片的方法    对应getitem方法   r[1:3]

****************************************************************************************************************************************************************************************************************************************************************************

 

 

 

 

 

 

****************************************************************************************************************************************************************************************************************************************************************************

 

posted on 2018-06-01 11:21  JuGooLar  阅读(165)  评论(0编辑  收藏  举报

导航