Python ';MyList';对象不支持项分配
亲爱的, 我试图更好地理解Python中的OOP范例,所以我创建了这个简单的类Python ';MyList';对象不支持项分配,python,class,oop,Python,Class,Oop,亲爱的, 我试图更好地理解Python中的OOP范例,所以我创建了这个简单的类 class MyList: def __init__(self,list): self.list=list list1=MyList([1,2,3,4,5]) 在一切正常之前,当我尝试为列表中的任何元素设置值时,就会出现问题。例如: list1[0]=5 然后我得到了这个类型错误:“MyList”对象不支持项分配 有人可以帮我吗?类中没有允许项目分配的代码。对于允许项分配的对象,它需要实
class MyList:
def __init__(self,list):
self.list=list
list1=MyList([1,2,3,4,5])
在一切正常之前,当我尝试为列表中的任何元素设置值时,就会出现问题。例如:
list1[0]=5
然后我得到了这个类型错误:“MyList”对象不支持项分配
有人可以帮我吗?类中没有允许项目分配的代码。对于允许项分配的对象,它需要实现 您将需要以下内容:
class MyList:
def __init__(self,list):
self.list=list
def __setitem__(self, i, elem):
self.list[i] = elem
class MyList:
定义初始化(自我,列表):
self.list=list
定义(自我):
返回str(self.\u dict\u)
list1=MyList([1,2,3,4,5])
打印(列表1)
列表1.列表[0]=5
打印(列表1)
您需要将list属性指定给类而不是类,因为您试图更好地理解OOP,这里有一些东西可以尝试:Subclass
list
本身,这样您的类就可以获得list
所做的所有属性
类MyList(列表):
定义初始化(自我,列表):
超级()。\uuuu初始化\uuuuu(列表)
list1=聚酯([1,2,3,4,5])
列表1[0]=5
打印(列表1)
# [5, 2, 3, 4, 5]
您可能正在尝试创建一个新的MyList类型,该类型应具有普通Python列表的功能以及您可能希望添加或修改的一些功能。要使其工作,需要从内置Pythonlist
类继承,如下所示
类MyList(列表):
通过
list1=MyList([1,2,3,4,5])
列表1[0]=5
现在,在您的MyList
类中,只定义那些您想在内置列表中更改的方法!
我实现了特殊的方法setitem和getitem,它成功了。谢谢大家
class MyList:
def __init__(self,list):
self.list=list
def __getitem__(self, index):
return self.list[index]
def __setitem__(self, index, value):
self.list[index] = value
list1.list[0]=5
您必须访问list
属性,因为list1
不是list
,它是一个MyList
实例。您可能想实现一些类似的“神奇方法”。看到了吗?这回答了你的问题吗?你好,Carcigenicate,谢谢你的支持。我已经试过了,但我得到了同样的错误信息…@blhsing我试过了,但由于某种原因,我在写下半部分的时候脑子里有了查找。我不知道为什么。修正了。@ViniciusMiki我用错了方法。我一边听讲座一边写,显然我的大脑分心了。请尝试更正的代码。