作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 float 进行了子类化以更改其 __str__()
方法以一个符号结尾(在我的例子中为 €)。
输入被过滤以删除一个符号(在我的例子中是 €)。
class Euro(float):
def __new__(cls, value):
v = ''.join([_ for _ in value if _ != '€' ])
return super(Euro, cls).__new__(cls, v)
def __str__(self):
return f'{self} €'
但是当我打印时,出现递归打印错误。
g = Euro('123.23 €')
print (g)
错误:
Euro.py, line __str__
return f'{self} €'
[Previous line repeated 329 more times]
RecursionError: maximum recursion depth exceeded
最佳答案
使用super()
调用父类的方法,避免递归错误。
def __str__(self):
return super().__str__() + ' €'
>>> g = Euro('123.23 €')
>>> print(g)
123.23 €
关于python - float 子类以改变摄入量和 __str__ 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60360569/
我是一名优秀的程序员,十分优秀!