Python 向列表中添加属性

Python 向列表中添加属性,python,Python,在python中,如何向列表添加属性以执行操作 假设您有一个类,如: class TestClass: def __init__(self, lst): self.lst = lst def test(self, lst): """ >>> t1 = TestClass([1,2,3,4]) >>> t1.test(self.lst).size 4

在python中,如何向列表添加属性以执行操作

假设您有一个类,如:

class TestClass:

    def __init__(self, lst):
        self.lst = lst

    def test(self, lst):
        """

        >>> t1 = TestClass([1,2,3,4])
        >>> t1.test(self.lst).size
        4

        """
如果将属性大小附加到函数测试,它将返回self.lst的长度。因此,
返回len(self.lst)
问题在于:

t1.test(self.lst).size
相当于:

a = t1.test(self.lst)
a.size
您访问的不是方法的属性,而是方法的返回值。您可能需要以下内容:

class TestClass:
    def __init__(self, lst):
        self.lst = lst

    def test(self):
        # do something to self.lst (rather than passing it in again)

    @property
    def size(self):
        return len(self.lst)

>>> t = TestClass([1,2,3,4])
>>> t.test()
...
>>> t.size
4
如果确实要将其添加到列表中,则需要将其包装为提供
size
方法的内容:

class SizeList(list):
    @property
    def size(self):
        return len(self)

class TestClass:
    def __init__(self, lst):
        self.lst = SizeList(lst)

    def test(self):
        # do something here
        return self.lst

>>> t = TestClass([1,2,3,4])
>>> t.test().size
4

这是没有意义的-为什么你要在
返回len(self.lst)
-和
测试中的另一个
lst
是什么?你到底想做什么?我怀疑它没有生成函数属性…举个例子。我不打算用它来做我正在做的事。但就这个例子来说,你能解释一下你当时在做什么吗我强烈怀疑这是一个XY问题,对于您可能提出的问题,任何答案都可能不适合您在这里实际尝试实现的目标……更准确地说,您在这里谈论的是方法,而不是函数。