2015-09-17 1 views
0
try: Polygon 
except: from Polygon import Polygon 

class Triangle(Polygon): 

def __init__(self, width, height): 

    sides = 3 
    super().__init__(sides, width) 

#  self.__side2 = s2 
#  self.__side3 = s3 
    self.__height = height 

def get_height(self): 
    """Returns height""" 
    return self.__height  

def set_height(self, height): 
    """Sets the height""" 
    if height <= 0: 
     raise ValueError('Height must be positive') 
    self.__height = height 
try: Triangle 
except: from Triangle import Triangle, Polygon 

Дочерний классPython Иерархия передавая функции

class IsocelesTriangle(Polygon): 

def __init__(self, width, height): 

#  sides = 3 

    super().__init__ (width, height) 

def get_area(self): 
    """Gets the area of an isoceles triangle""" 
    area = ((1/2) * (self.get_width()) * (self.get_height())) 
    return area 

def get_perimeter(self): 
    """Returns the are of an isoceles triangle""" 
    p = (2 * self.get_width()) + self.get_height() 
    return p 

Так что я имею вопрос, где класс Triangle выше, чем класс IsocelesTriangle, есть класс многоугольник выше, и я получить ширину от что. Однако я пытался в течение нескольких часов, чтобы получить высоту из треугольника в классе IsocelesTriangle, но он продолжает бросать:

AttributeError: 'IsocelesTriangle' object has no attribute 'get_height' 

Любые выводы будут весьма благодарны.

+1

Ваш isosceles класс наследует от Polygon, а не от треугольника. Где вы ожидаете получить метод get_height? – BrenBarn

+0

Я потратил более часа, зная, что у меня все в порядке. Спасибо – Luis

+0

BTW: Знаете ли вы, что вопрос о классификаторе ООП, как моделировать круг и эллипс, прямоугольник и квадрат? Похоже, что ваши два треугольника имеют схожие проблемы ... Тем не менее, вы должны были потратить десять минут на извлечение минимального (!) Примера. Я уверен, вы заметили бы свою ошибку. –

ответ

0

Ваш IsocelesTriangle не наследует от вашего класса Triangle. Вместо этого он наследуется от Polygon. Поэтому он не видит функцию get_height.