Python 向列表中添加属性
在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
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问题,对于您可能提出的问题,任何答案都可能不适合您在这里实际尝试实现的目标……更准确地说,您在这里谈论的是方法,而不是函数。