Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用属性从列表中追加和删除元素_Python_Python 3.x - Fatal编程技术网

Python 使用属性从列表中追加和删除元素

Python 使用属性从列表中追加和删除元素,python,python-3.x,Python,Python 3.x,在我的基类中,mylist被定义为列表 在我的派生类Boo中 class Boo(Foo) def __init__(self): """ """ def add_element(self,value): Foo.mylist.appened(value) 我想从Boo向mylist添加和删除元素。 我尝试了以下方法: boo = Boo() boo.add\_element(5) 出现了以下例外情况: AttributeError: 'prop

在我的基类中,mylist被定义为列表

在我的派生类Boo中

class Boo(Foo)
    def __init__(self):
    """   """

    def add_element(self,value):
        Foo.mylist.appened(value)
我想从Boo向mylist添加和删除元素。 我尝试了以下方法:

boo = Boo()
boo.add\_element(5)
出现了以下例外情况:

AttributeError: 'property' object has no attribute 'append'
目前,我修改了mylist的setter属性,如下所示:

    @mylist.setter
    def mylist(self, value):
        self._mylist.append( value )
这允许我向mylist中添加元素,但我不知道如何从中删除元素


是否有更好的方法从派生类修改基于类中的列表?

尝试以下操作:

@property
def del_element(self, value):
    self._mylist.remove(value)

@property
def add_element(self,value):
    self._mylist.append(value)

为什么必须更改setter的语义

如果只是使用list的方法来操作列表呢

class Foo(object):

    def __init__(self):
        self._mylist = list()

    @property
    def mylist(self):
        return self._mylist

    @mylist.setter
    def mylist(self, value):
        self._mylist = value

class Boo(Foo):
    pass

b = Boo()
b.mylist.append(1)  # append directly
b.mylist.append(2)
b.mylist.append(3)
b.mylist.remove(2)  # remove directly

这还不清楚。您希望如何从列表中删除元素?有.deleter(请参阅),但恐怕无法传递任何值。我认为使用一个属性来做这件事不是一个好主意。不是真的。
mylist
属性已返回列表,您可以随意修改该列表。
class Foo(object):

    def __init__(self):
        self._mylist = list()

    @property
    def mylist(self):
        return self._mylist

    @mylist.setter
    def mylist(self, value):
        self._mylist = value

class Boo(Foo):
    pass

b = Boo()
b.mylist.append(1)  # append directly
b.mylist.append(2)
b.mylist.append(3)
b.mylist.remove(2)  # remove directly