Печать строки подкласса

У меня есть "Суперкласс" и "Подкласс"

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 импортировать GeoMetricObject, треугольник

Второй файл, который запускает модули выше.

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())

главный()

Моя проблема в том, что я могу получить правильный вывод из подкласса 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

Я не уверен, как решить эту проблему. Я не очень хороший программист, в основном биолог.

1 ответ

Вы пытаетесь неявно преобразовать 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, но он должен работать.

Другие вопросы по тегам