Python_67面向对象类之特殊成员setitem/getitem/delitem
Posted JuGooLar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
****************************************************************************************************************************************************************************************************************************************************************************
****************************************************************************************************************************************************************************************************************************************************************************
以上是关于Python_67面向对象类之特殊成员setitem/getitem/delitem的主要内容,如果未能解决你的问题,请参考以下文章