将属性添加到列表

时间:2014-01-29 00:48:05

标签: 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

        """

如果将属性大小附加到函数test,它将返回self.lst的长度。所以,return len(self.lst)

1 个答案:

答案 0 :(得分:2)

问题是:

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