因此,对于我正在编写的点类,我需要编写一个舍入并以字符串形式转换为int的方法。这就是我所做的:
def __str__(self):
return int(round(self.x))
所以它舍入并转换为int但它不是字符串形式。我尝试过使用str,但这根本不起作用。那我怎么能把它变成字符串形式?这是我的全部观点:
import math
class Error(Exception):
def __init__(self, message):
self.message = message
class Point:
def __init__(self, x, y):
if not isinstance(x, float):
raise Error ("Parameter \"x\" illegal.")
self.x = x
if not isinstance(y, float):
raise Error ("Parameter \"y\" illegal.")
self.y = y
def rotate(self, a):
if not isinstance(a, float):
raise Error("Parameter \"a\" illegal.")
self.x0 = math.cos(a) * self.x - math.sin(a) * self.y
self.y0 = math.sin(a) * self.x + math.cos(a) * self.y
def scale(self, f):
if not isinstance(f, float):
raise Error("Parameter \"f\" illegal.")
self.x0 = f * self.x
self.y0 = f * self.y
def translate(self, delta_x, delta_y):
if not isinstance(delta_x, float):
raise Error ("Parameter \"delta_x\" illegal.")
self.x0 = self.x + delta_x
if not isinstance(delta_y, float):
raise Error ("Parameter \"delta_y\" illegal.")
self.y0 = self.y + delta_y
def __str__(self):
return str(int(round(self.x)))
return str(int(round(self.y)))
现在我还有一个我尚未写完的行类,所以如果这个类看起来很好,那么错误必须在我的行类中。
答案 0 :(得分:3)
class X:
def __init__(self):
self.x = 3.1415
def __str__(self):
return str(int(round(self.x)))
x = X()
print x
这会打印3
答案 1 :(得分:0)
只需将您返回的值转换为字符串。在Python数据模型中,
object.__str__(self)
由str(object)和内置函数format()和print()调用,以计算对象的“非正式”或可打印的字符串表示形式。返回值必须是字符串对象。
__str__
函数是一个内置函数,必须返回对象的非正式字符串表示。您正在返回整数表示。
所以只需将return
更改为str(int(round(self.x)))