首页 > 解决方案 > 无法捕获全局列表的元素(多边形继承)

问题描述

我试图捕捉我在 Polygon 类顶部声明的列表的元素,但我在 sideLenght 方法中遇到问题,该方法本质上是一个列表列表(我不明白为什么)。因此,我无法创建计算三角形的周长。这是我如何开始的:

t=Triangle()
t.sideLength()
t.findPeri()

在我调用 findPeri() 方法之前,一切正常。这是我得到的回报:

t.findPeri()

我得到的是以下内容:

TypeError: unsupported operand type(s) for +: 'int' and 'list'

这里到底发生了什么?我怎样才能解决这个问题?我的整个代码如下:

class Polygon:
   sides= []
   def __init__(self, num_of_sides):
       self.n= num_of_sides
       self.num_of_sides= int(input('Enter the number of sides: '))



   def sideLength(self):
       """This method appends all sides of the polygon into a list"""
       for i in range(self.n):
           side = int(input('Enter the length the side: ' + str(i+1) + ' : '))
           Polygon.sides.append(self.side)
       print Polygon.side


class Triangle(Polygon):
    def __init__(self):
       Polygon.__init__(self,3)

    def findPeri(self):
       print  'The toatal area of your perimeter is: ',sum(Polygon.sides)

标签: pythonpython-2.7class

解决方案


尝试对 side 属性使用这样的 self 关键字。那应该可以解决您的问题。

class Polygon:

   def __init__(self, num_of_sides):
       self.n= num_of_sides
       self.num_of_sides= int(input('Enter the number of sides: '))
       self.sides = []


   def sideLength(self):
       """This method appends all sides of the polygon into a list"""
       for i in range(self.n):
           side = int(input('Enter the length the side: ' + str(i+1) + ' : '))
           self.sides.append(side)
       print self.sides


class Triangle(Polygon):
    def __init__(self):
       Polygon.__init__(self,3)

    def findPeri(self):
       print  'The total area of your perimeter is: ',sum(self.sides)

推荐阅读