1 year ago

#334281

test-img

yiqing zhang

subclass for NameError: name 'side_length' is not defined

class Polygon():
def __init__(self, side_lengths):
    self.side_lengths = side_lengths
def perimeter(self):
    return sum(self.side_lengths)
def __str__(self):
    side_lengths = len(self.side_lengths)
    return 'Polygon with {} sides'.format(side_lengths)
class Triangle(Polygon):
def __init__(self, side_lengths):
    super().__init__(side_lengths)
def area(self):
    s = sum(self.side_lengths)/2 
    a = self.side_lengths[0]
    b = self.side_lengths[1]
    c = self.side_lengths[2]
    return float((s*(s-a)*(s-b)*(s-c)) ** 0.5)
def __str__(self):
    return 'Triangle, Area: {:.2f} units^2, Perimeter: {:.2f} units'.format(self.area(), self.perimeter())  
class Rectangle(Polygon):

    def __init__(self, side_lengths):
        super().__init__(side_lengths)
    def area(self):
        return float(self.side_lengths[0]*self.side_lengths[1])
    def __str__(self):
        return 'Rectangle, Area: {:.2f} units^2, Perimeter: {:.2f} units'.format(self.area(), self.perimeter())

class Square(Rectangle):
    def __init__(self, side_length):
        self.side_length = side_length

    def area(self):
        return float(4*side_length)
    def __str__(self):
      return 'Square, Area: {:.2f} units^2, Perimeter: {:.2f} units'.format(self.area(), self.perimeter())

For this program, I want to calculate the area of the square when the input of side_length is a float instead of a list, but name error occurs. How to deal with such issue?

class Square(Rectangle):

    def __init__(self,side_length):
        super().__init__(side_length)

I also tried this method, it does not work as well.

python-3.x

list

floating-point

subclass

0 Answers

Your Answer

Accepted video resources