我有一个“超类”和一个“子类”
class Triangle(GeoMetricObject):
def __init__(self,side1=1,side2=1,side3=1):
super().__init__()
self.__side1= side1
self.__side2= side2
self.__side3= side3
def getPerimeter(self,side1,side2,side3):
return side1+side2+side3
def __str__(self):
return super().__str__()+"side1:"+(self.__side1)+"side2:"+(self.__side2)+"side3:"+(self.__side3)
来自GeometricObject import GeoMetricObject,Triangle
第二个文件,它运行上面的模块。
def main():
s1= int(input("What is the length of the first side? "))
s2= int(input("What is the length of the second side? "))
s3= int(input("What is the length of the third side? "))
side1=s1
side2=s2
side3=s3
t1 = Triangle(s1,s2,s3)
l = GeoMetricObject()
print("Default color of Triangle:",l.getColor())
print("The Perimeter of Triangle : ",t1.getPerimeter(side1,side2,side3,))
print(Triangle())
main()的
我的问题是我似乎可以正确地从子类 str 获得正确的输出。它给了我这个错误;
Traceback (most recent call last):
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 15, in <module>
File "C:\Program Files (x86)\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py", line 14, in main
File "c:\Users\Fergus\Desktop\GeometricObject.py", line 26, in __str__
return super().__str__()+"side1:"+(self.__side1)+"side2:"+(self.__side2)+"side3:"+(self.__side3)
builtins.TypeError: Can't convert 'int' object to str implicitly
我不确定如何解决这个问题。我不是一个非常优秀的程序员,大多是生物学家。
答案 0 :(得分:0)
当你进行添加时,你试图将implictly int转换为string。您不能在这些不同类型之间进行添加。但是,如果你将你的int转换成字符串,没问题
替换这个:
super().__str__()+"side1:"+(self.__side1)+"side2:"+(self.__side2)+"side3:"+(self.__side3)
由此:
super().__str__()+"side1:"+str(self.__side1)+"side2:"+str(self.__side2)+"side3:"+str(self.__side3)
不要检查python3但它应该可以工作。