如何在两个python类实例之间执行求和,并获得每个实例变量的长度列表
这是我的问题 我必须对类如何在两个python类实例之间执行求和,并获得每个实例变量的长度列表,python,sum,add,Python,Sum,Add,这是我的问题 我必须对类Foo的两个实例求和。该类接受实例变量bar作为list。我的目标是在加法过程中,除了求和(在列表意义上)之外,还要计算另一个包含每个实例.bar长度的列表。 当然,我到目前为止所取得的成就并不适用于涉及两个以上附录的总和,因为它总是提供一个长度为2的列表 非常感谢您的帮助 这是到目前为止我的代码 class Foo(): 定义初始化(自我,条形图:列表): 如果存在(条形图、列表): self.bar=bar 其他: raise TypeError(f“{bar}不是列
Foo
的两个实例求和。该类接受实例变量bar
作为list
。我的目标是在加法过程中,除了求和(在列表
意义上)之外,还要计算另一个包含每个实例.bar
长度的列表。
当然,我到目前为止所取得的成就并不适用于涉及两个以上附录的总和,因为它总是提供一个长度为2的列表
非常感谢您的帮助
这是到目前为止我的代码
class Foo():
定义初始化(自我,条形图:列表):
如果存在(条形图、列表):
self.bar=bar
其他:
raise TypeError(f“{bar}不是列表”)
定义添加(自身、其他):
如果存在(其他,Foo):
添加了_bar=self.bar+other.bar
添加了\u foo=foo(添加了\u条)
其他:
raise TypeError(f“{other}不是'Foo'的实例)
添加了_foo.len_bar=[len(self.bar)]+[len(other.bar)]
返回已添加的\u foo
定义(自身、其他):
如果其他==0:
回归自我
其他:
返回自我。添加(其他)
a=Foo([1,2,3])
b=Foo([4,5])
c=Foo([7,8,9,“a”])
r=a+b+c
print(r.len_bar)#prints[5,4],有没有办法得到[3,2,4]?
听起来,如果之前未包含长度,则希望将其包含在add中;如果之前已包含长度,则希望将之前的长度列表包含在add中。我更新了代码
class Foo():
def __init__(self, bar: list):
if isinstance(bar, list):
self.bar = bar
else:
raise TypeError(f"{bar} is not a list")
def __add__(self, other):
if isinstance(other, Foo):
added_bar = self.bar + other.bar
added_foo = Foo(added_bar)
else:
raise TypeError(f"{other} is not an instance of 'Foo'")
self_len_bars = self.len_bars if hasattr(self,'len_bars') else [len(self.bar)]
other_len_bars = other.len_bars if hasattr(other,'len_bars') else [len(other.bar)]
added_foo.len_bars = self_len_bars + other_len_bars
return added_foo
def __radd__(self, other):
if other == 0:
return self
else:
return self.__add__(other)
a = Foo([1, 2, 3])
b = Foo([4, 5])
c = Foo([7, 8, 9, "a"])
r = a+b+c
print(r.len_bars)
您是如何得到结果的?对不起,我不理解您的问题,为什么只有一些
Foo
实例具有len\u bar
属性?为什么不在构造函数中设置?基本上,加法是如何工作的?你不能只说“结果在这里”,然后期望我们知道你在说什么。因为我只需要在汇总的实例中使用len_bar
,以执行下一个任务。另外,如果实例具有attrlen_条
我会立即将该实例识别为求和的结果