在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)
答案 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