Python3“魔术函数”堆栈跟踪

杰里米

我发现自己在哪里,我在Python3重新定义了很多我的课的所谓“神奇”的属性或功能的(这种情况__add____sub__等等)

对于所有这些,我实现了相同的两行代码:

arg1 = self.decimal if isinstance(self, Roman) else self
arg2 = other.decimal if isinstance(other, Roman) else other

这些行的作用细节并不重要,但是,我的代码中的多余内容却分散了人们的注意力。在REPL中,是否有另一个“魔术”函数位于该函数与它之间的中间位置?

例如:

>> Class(9) + Class(3)
... (somewhere in python module)
... def __magicFunction__(self, rhs):
...   arg1 = self.decimal if isinstance(self, Roman) else self
...   arg2 = other.decimal if isinstance(other, Roman) else other
... 
... THEN
...
... def __add__(self, rhs):
...   return arg1 + arg2
...
12

带有如下所示的堆栈跟踪:

Traceback (most recent call last):  
  File "< stdin>", line 1, in < module>  
  File "/home/module.py", line 105, in ```__magicFunction__```  
  File "/home/module.py", line 110, in ```__gt__```  

我希望这是有道理的...

杰里米

我不知道另一个魔术函数,但是使arg1和arg2成为您所在类的永久变量可能同样有效。然后为您从其他每个魔术函数中调用的类创建一个方法。

编辑:

实际上,为什么不只使用getattr?因此每个魔术函数都将如下所示:

def __add__(self, rhs):
  return getattr(self, 'decimal', self) + getattr(other, 'decimal', other)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

python3的除法魔术方法是什么?

来自分类Dev

如何获取任何函数的函数堆栈跟踪?

来自分类Dev

Python魔术函数,它如何工作?

来自分类Dev

Python3包装函数

来自分类Dev

Python3哈希函数覆盖

来自分类Dev

函数中的Python3变量

来自分类Dev

Python3:使用 exec() 创建函数

来自分类Dev

跟踪python函数

来自分类Dev

从 python gevent 输出中删除堆栈跟踪

来自分类Dev

Python3:将递归函数注入函数中的exec()

来自分类Dev

如何打印出已返回的函数调用的堆栈跟踪?

来自分类Dev

PHP在异常堆栈跟踪中缺少函数参数

来自分类Dev

如何在Python3中的trace.Trace模块中存储跟踪调用的结果

来自分类Dev

Python3 ElementTree循环在解析时停滞。跟踪显示subprocess.CalledProcessError

来自分类Dev

python的所有内置函数都有魔术方法吗?

来自分类Dev

python的所有内置函数都有魔术方法吗?

来自分类Dev

在函数中引用DataFrame名称(pandas,python3)

来自分类Dev

Python3的内置zip函数出现问题

来自分类Dev

在Python3中动态修饰类内部的函数

来自分类Dev

Python3:dict构造函数是否创建深层副本?

来自分类Dev

使用python3和nltk从模块调用函数的问题

来自分类Dev

如何验证函数中用户的输入?#python3

来自分类Dev

从python3中的文件中导入函数的正确方法

来自分类Dev

Python3递归,for循环函数返回奇怪的输出

来自分类Dev

Python3 Odoo TypeError sys.print不是函数

来自分类Dev

如何使用可选参数python3创建函数

来自分类Dev

如何在Python3中的类中调用函数

来自分类Dev

TypeError:“函数”对象不可下标[Python3]

来自分类Dev

在python3中调用递归函数fom if语句条件

Related 相关文章

热门标签

归档