В отличие от многих других языков, python не разрешает неявный доступ к атрибутам экземпляра.Чтобы получить доступ к атрибуту в python, вы должны явно поставить перед ним префикс self.
, например:
return "Perimeter = %s" % (self.side1 + self.side2 + self.side3)
Без префикса self.
python считает side1
локальной или глобальной переменной.
То же самое относится и к методам.Например, если вы хотите позвонить perimeter
из __init__
, это не будет работать:
def __init__(self, side1, side2, side3):
self.side1 = side1
self.side2 = side2
self.side3 = side3
perimeter()
Вместо этого вам придется написать
self.perimeter()
См. Также этот связанный вопрос .