对于用户定义的python类型,使用'a+;b+;c+;d`do`求和(a,b,c,d)`而不是`((a&&x2B;b)&&x2B;c)&&x2B;d`

对于用户定义的python类型,使用'a+;b+;c+;d`do`求和(a,b,c,d)`而不是`((a&&x2B;b)&&x2B;c)&&x2B;d`,python,delayed-execution,Python,Delayed Execution,我有一个类型Foo,对于它,调用求和(a,b,c,d)比执行加法a+b+c+d更有效。不过,只写a+b+c+d要好得多 据我所知,一个解决方案是编写一个包装类型DelayedSum,这样Foo.\uu-add.\uuu(A,b)将返回DelayedSum([A,b])和DelayedSum.\uu-add.\uuu执行类似的操作。然后,我需要提供每次使用DelayedSum类型的对象时要执行的计算。这意味着我需要定义所有的“神奇”操作符 class DelayedSum: ...

我有一个类型
Foo
,对于它,调用
求和(a,b,c,d)
比执行加法
a+b+c+d
更有效。不过,只写
a+b+c+d
要好得多

据我所知,一个解决方案是编写一个包装类型
DelayedSum
,这样
Foo.\uu-add.\uuu(A,b)
将返回
DelayedSum([A,b])
DelayedSum.\uu-add.\uuu
执行类似的操作。然后,我需要提供每次使用
DelayedSum
类型的对象时要执行的计算。这意味着我需要定义所有的“神奇”操作符

class DelayedSum:
    ...
    def __len__(self):
        foo = summation(*self.foo_list) # this will be repeated everywhere, write decorator?
        return len(foo)  
    def __getattr__(self, value):
        ...
另外,如果有人开始使用
y=a+b+c
并检查
y
是否为给定类型或尝试
y.bar=2
,我很确定这会变得有点尴尬。我很确定我忘记了一些问题

是否有一个标准的方法进行和/或一个程序包?我当然不是第一个需要这些信息的人,但我很难找到相关信息