gpt4 book ai didi

python - 如何使用实例激活 __str__ dunder 方法并修复错误 :"__str__ returned non-string (type NoneType)"

转载 作者:行者123 更新时间:2023-12-01 07:40:54 25 4
gpt4 key购买 nike

我一直在尝试创建一个理性类,并添加一个 __str__ dunder 方法返回 p(分子)除以 q(分母)。当我尝试打印对象 Rational_1 时,它只提供 init 方法的输出,并且不返回 __str__根本没有dunder方法。所以我尝试使用 print 而不是 return,但它引发了一个错误: "__str__ returned non-string (type NoneType)" 。如何打印 str 并且不引发错误?谢谢!

import math
class Rational:
def __init__(self,p,q):
self.p=p
self.q=q
def __str__(self):
self.great_dev=math.gcd(self.p,self.q)
self.p=self.p/self.great_dev
self.q=self.q/self.great_dev
print ("{self.p}/{self.q}".format(self=self))
rational_1=Rational(3,60)
print(rational_1)

最佳答案

正如错误所示,您需要返回您在重写的__str__ dunder方法中创建的类实例的新字符串表示形式。

def __str__(self):
self.great_dev=math.gcd(self.p,self.q)
self.p=self.p/self.great_dev
self.q=self.q/self.great_dev
# return the updated string representation
return "{self.p}/{self.q}".format(self=self)

然后代码将是预期的并且输出将为1.0/20.0

关于python - 如何使用实例激活 __str__ dunder 方法并修复错误 :"__str__ returned non-string (type NoneType)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com