我写了这个程序来学习OOP的基础知识。当我在Python Shell中从IDLE运行这个程序时,它没有显示任何错误但也没有打印任何东西......我不知道如何弄清楚我的错误是什么。
这是我的代码:
class Shapes(object):
def __init__(self, width, length):
object.__init__(self)
self.setWidth(width)
self.setLength(length)
def getWidth(self):
return self.width
def setWidth(self, width):
if (width <= 0):
width = 5
else:
width = self.width
def getLength(self):
return self.length
def setLength(self, length):
if (length <= 0):
length = 10
else:
length = self.length
class Rectangle(Shapes):
def __init__(self, area, perimeter):
Shapes.__init__(self, length, width)
def getArea(length, width):
return length * width
def getPerimeter(length, width):
return (length * 2) + (width * 2)
def getStats(self):
print("Area: {}".format(self.getArea()))
print("Perimeter: {}".format(self.getPerimeter()))
print("Length: {}".format(self.getLength()))
print("Width: {}".format(self.getWidth()))
def main():
print("Rectangle a: ")
a = Rectangle(5, 7)
print("Area: {}".format(a.area))
print("Perimeter: {}".format(a.perimeter))
print( " ")
print("Rectangle b: ")
b = Rectangle()
b.width = 10
b.height = 20
print(b.getStats())
如果您想看看,以下是Shell正在做的事情: http://imgur.com/DxyUZyY
我做错了什么,如何纠正?
答案 0 :(得分:1)
你永远不会打电话给主要功能。与C中不同,main
函数会自动执行,在python中,你必须显式调用它; main没有任何特殊意义,只是python中的另一个函数。
所以在你的代码结束时,写下:
main()
一旦你运行了它,你会在他的评论中看到@Eric指出的错误等等。
您当前的代码存在许多问题,以下是其中一些代码的列表:
object.__init__(self)
没有做任何事情 self.setWidth(width)
调用该方法,但setWidth
方法尝试设置为尚未声明的变量。
所以这需要更正
def setWidth(self, width):
if (width <= 0):
width = 5
else:
width = width # and not self.width
上述情况也适用于setLength
。
@property
。Shapes.__init__(self, length, width)
不是正确的电话。
super
length
,此处未定义width
。