我正在为学校创建一个父类矩形的子类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()}'