对于用户定义的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
,我很确定这会变得有点尴尬。我很确定我忘记了一些问题
是否有一个标准的方法进行和/或一个程序包?我当然不是第一个需要这些信息的人,但我很难找到相关信息