python - 无法捕获全局列表的元素(多边形继承)
问题描述
我试图捕捉我在 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)
解决方案
尝试对 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)