STR方法没有正确打印



我正在为学校创建一个父类矩形的子类Rug。
一切看起来都应该工作,但当我尝试打印子类的__str__方法时,唯一从父类填充的是<__main__.Rug object at 0x0000019C2B69C400>

这是我的父类:

import math
class Rectangle:

def __init__(self, l, w):
self.setLength(l)
self.setWidth(w)

def getLength(self):
return self.__length
def setLength(self, l):
if l < 0:
l = 1
self.__length = l
def getWidth(self):
return self.__width
def setWidth(self, w):
if w < 0:
w = 1
self.__width = w
def getArea(self):
return self.__length * self.__width
这是我的Rug子类:
class Rug(Rectangle):
def __init__(self, l, w, p):
super().__init__(l, w)
self.__price = p
def getPrice(self):
return self.__price
def __str__(self):
return super().__str__() + ", Area: " + str(self.getArea()) + ", Price: " + str(self.getPrice())
def main ():
r = Rug(float(input("Please enter length: ")), float(input("Please enter width: ")), 150)
print(r)
main()

这些都在Python 3中。

这是我第一次在这里问问题,所以如果我需要提供更多的信息,如我的Rectangle父类的代码,请让我知道。

任何帮助将不胜感激!

是否在基类中实现__str__(self)?假设您的Rectange如下所示:

class Rectangle():
def __init__(self, l, w):
self.length = l
self.width = w
def getArea(self):
return self.length * self.width
def __str__(self):
return f'Rug {self.length}x{self.width}'

你的代码将打印由它的__str__()函数定义的基函数的字符串表示。

你可以使用f-string插值来清理你的Rug.__str__():

class Rug(Rectangle):
...
...
def __str__(self):
return f'{super().__str__()}, Area: {self.getArea()}, Price: {self.getPrice()}'

最新更新