想实现一个伪列表
python吧
全部回复
仅看楼主
level 12
自学一坤月的新手,有个想法,想让我构造的类对象可以使用切片或是下标号获取实例变量的值
目前想法是给实例初始化一个空列表属性variables_list,专门用于存放其他实例变量,但是问题就来了,存入列表的是每个实例变量的值,而我想要的是每个实例变量名称提取为字符串格式再存入这个列表,例如self.a = 0,我需要的是将字符串'a'存入列表,而不是将整数0存入列表,有什么方法能在我构造这个实例变量时提取出字符串的变量名?
后续__getitem__,__setitem__,__delitem__这些我都懂实现,我能想到的提取属性字符串名称的只有描述符相关的__setname__,但是这又违背我的初衷了,主要是我目前还不懂实现将动态添加的实例变量构造成描述符
最终我希望的效果是这样的,我任意一个实例对象新增了一个属性,例如x,此时会自动在这个实例对象的variables_list加入一个字符串元素'x',后续我就可以实现使用[lbk]下标号[rbk]、[lbk]切片[rbk]、[lbk]属性名[rbk]取值、赋值、删除,实现__len__返回len(self.variables_list),总之就是围绕如何将变量名提取为字符串,所以各位大佬有啥思路不?
至少我觉得这样构造的类,相对于普通的类,多了额外几种取值方法,相对于一个列表来说,多出了[lbk]属性名[rbk]甚至是[lbk]属性名1:属性名2:步长[rbk]的取值方法,不知道现实中有没有能用上的场景,纯脑洞,求轻喷
2023年09月28日 03点09分 1
level 12
搞什么鬼,辛苦码的字左中括号[和右中括号]都被自动替换了
2023年09月28日 03点09分 2
level 12

2023年09月28日 08点09分 3
level 11
把对象名字符串化,再把字符串转换成对象名强制转换成对象
2023年09月28日 09点09分 4
level 6
使用eval并提供一个增添属性的方法,传入一个字符串和值 如果只是完成类似这种取值的多种方法,也可以直接维护两个dict,而不用list
2023年09月29日 08点09分 5
吧务
level 12
。。。。。。。。。。。。
。。def __setattr__(self, key, value):
。。。。self.__dict__[key] = value
2023年09月29日 08点09分 6
1