Python ';MyList';对象不支持项分配

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”对象不支持项分配 有人可以帮我吗?类中没有允许项目分配的代码。对于允许项分配的对象,它需要实

亲爱的, 我试图更好地理解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

    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列表的功能以及您可能希望添加或修改的一些功能。要使其工作,需要从内置Python
list
类继承,如下所示

类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我用错了方法。我一边听讲座一边写,显然我的大脑分心了。请尝试更正的代码。