类中的直接打印-python

类中的直接打印-python,python,Python,我是新来的“课堂”方法,如果有人感到不满,我很抱歉。很多人都知道这个例子: class Rectangle: def __init__(self, length, breadth, unit_cost=0): self.length = length self.breadth = breadth self.unit_cost = unit_cost def get_perimeter(self): return 2

我是新来的“课堂”方法,如果有人感到不满,我很抱歉。很多人都知道这个例子:

class Rectangle:
    def __init__(self, length, breadth, unit_cost=0):
        self.length = length
        self.breadth = breadth
        self.unit_cost = unit_cost

    def get_perimeter(self):
        return 2 * (self.length + self.breadth)

    def get_area(self):
        return self.length * self.breadth

    def calculate_cost(self):
        area = self.get_area()
        return area * self.unit_cost
现在,为了获取信息,我们需要执行以下操作:

r = Rectangle(160, 120, 2000)
print("Area of Rectangle: %s cm^2" % (r.get_area()))
print("Cost of rectangular field: Rs. %s " %(r.calculate_cost()))
结果:

  • 矩形面积:19200厘米^2
  • 矩形场地成本:38400000卢比
但我不这么做,我需要写下:

Rectangle(160, 120, 2000)
现在就得到答案:

  • 矩形面积:19200厘米^2
  • 矩形场地成本:38400000卢比
我可以使用普通的def myfunction:但是我想按类来做。
谢谢你的帮助

如果将在
print
语句中编写的代码实现为class
\uuuu str\uuu
方法,则可以通过打印类本身来获得该结果:

class Rectangle:
    def __init__(self, length, breadth, unit_cost=0):
        self.length = length
        self.breadth = breadth
        self.unit_cost = unit_cost

    def __str__(self):
        return "Area of Rectangle: %s cm^2\nCost of rectangular field: Rs. %s " % (self.get_area(), self.calculate_cost())

    def get_perimeter(self):
        return 2 * (self.length + self.breadth)

    def get_area(self):
        return self.length * self.breadth

    def calculate_cost(self):
        area = self.get_area()
        return area * self.unit_cost
以及输出:

>>> print(Rectangle(160, 120, 2000))                                                                                                                        
Area of Rectangle: 19200 cm^2
Cost of rectangular field: Rs. 38400000

这是一个比向
\uuuu init\uuuu
添加
print
语句更好的设计决策,因为在
矩形()调用周围添加
print
语句相对轻松,而且它更灵活,因为您仍然可以选择是否显示输出。

如果您将在
print
语句中编写的代码实现为class
\uuu str\uuu
方法,您将通过打印类本身获得该结果:

class Rectangle:
    def __init__(self, length, breadth, unit_cost=0):
        self.length = length
        self.breadth = breadth
        self.unit_cost = unit_cost

    def __str__(self):
        return "Area of Rectangle: %s cm^2\nCost of rectangular field: Rs. %s " % (self.get_area(), self.calculate_cost())

    def get_perimeter(self):
        return 2 * (self.length + self.breadth)

    def get_area(self):
        return self.length * self.breadth

    def calculate_cost(self):
        area = self.get_area()
        return area * self.unit_cost
以及输出:

>>> print(Rectangle(160, 120, 2000))                                                                                                                        
Area of Rectangle: 19200 cm^2
Cost of rectangular field: Rs. 38400000

这是一个比向
\uuuu init\uuuu
添加
print
语句更好的设计决策,因为在
矩形()调用周围添加
print
语句相对轻松,而且它更灵活,因为您仍然可以选择是否要显示输出。

使用
\uuuuu repr\uuuu
来制作类的可打印表示,然后从
\uu init\uuuu
中添加打印语句,如果您想避免在类之外使用打印(您可以将此选项设置为可选)

输出:

r=矩形(1601202000)


使用
\uuuu repr\uuuuu
制作类的可打印表示,然后在
\uuuuu init\uuuuuu
中添加一条打印语句,如果您希望避免在类之外使用打印(您可以将此设置为可选)

输出:

r=矩形(1601202000)


您可以尝试调用
\uuuu init\uuuu()
方法中涉及的函数,然后在那里打印结果。当您创建一个新的
矩形
实例时,它应该会给您结果。您可以尝试调用
\uuuu init\uuuu()
方法中涉及的函数,然后在那里打印结果。当您创建一个新的
Rectangle
实例时,它应该会立即给出结果。效果很好,但我只希望这个结果不打印。在这种情况下,只需添加行
print(“矩形区域:%s cm^2\n矩形域的成本:Rs.%s”%(self.get\u Area(),self.calculate\u cost())
\uuuu init\uuu
方法。但请记住我的最后一段。请记住,行为会有所不同,这取决于您是否将对象分配给变量:r=Rectangle(160,120,2000),或者直接创建对象:Rectangle(160,120,2000)效果很好,但我只希望此结果不打印在这种情况下,只需添加行
print即可(“矩形面积:%s cm^2\n矩形域的成本:Rs.%s”%(self.get\u Area(),self.calculate\u cost())
\uuu init\uuuuu
方法。但请记住我的最后一段。请记住,行为将根据是否将对象分配给变量而有所不同:r=Rectangle(1601202000),或直接创建对象:矩形(1601202000)