Python - 如何以字符串形式返回int?

时间:2016-03-06 18:06:49

标签: python

因此,对于我正在编写的点类,我需要编写一个舍入并以字符串形式转换为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)))

现在我还有一个我尚未写完的行类,所以如果这个类看起来很好,那么错误必须在我的行类中。

2 个答案:

答案 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()调用,以计算对象的“非正式”或可打印的字符串表示形式。返回值必须是字符串对象。

来自Python Data Model

__str__函数是一个内置函数,必须返回对象的非正式字符串表示。您正在返回整数表示。

所以只需将return更改为str(int(round(self.x)))

即可