2015-09-17 21 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 

所以我有一個問題,即三角類比IsocelesTriangle類高,有一個多邊形類高了,我得到的寬度那。不過,我一直試圖小時到達的高度了三角到IsocelesTriangle類,但它不斷拋出:

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

任何線索將不勝感激。

+1

您的isosceles類繼承自Polygon,而不是Triangle。你期望它從哪裏得到'get_height'方法? – BrenBarn

+0

我花了一個多小時才知道我的一切都正確。謝謝 – Luis

+0

順便說一句:您是否知道classig OOP問題如何模擬圓和橢圓或矩形和正方形?它看起來好像你的兩個三角形有類似的問題......也就是說,你應該花了十分鐘提取一個最小(!)的例子。我相信你會注意到你的錯誤。 –

回答

0

您的IsocelesTriangle不會繼承自您的Triangle類。相反,它從Polygon繼承。因此它不會看到get_height函數。