gpt4 book ai didi

Python shell 没有显示错误,但程序没有运行

转载 作者:行者123 更新时间:2023-11-28 18:38:50 25 4
gpt4 key购买 nike

我编写此程序是为了学习 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

我做错了什么,我该如何纠正?

最佳答案

您永远不会调用主函数。不像在 C 中,main 函数会自动执行,在 python 中,你必须明确地调用它; main 没有任何特殊意义,只是 python 中的另一个函数。

所以在代码的末尾,写:

main()

一旦你运行它,你会看到像@Eric 在他的评论中指出的错误,以及更多。


您当前的代码有很多问题,这里列出了其中的一些:

  1. object.__init__(self) 什么都不做
  2. self.setWidth(width) 调用该方法,但 setWidth 方法尝试设置为尚未声明的变量。

    • 因此需要更正为

      def setWidth(self, width):
      if (width <= 0):
      width = 5
      else:
      width = width # and not self.width
  3. setLength 也是如此。

  4. 由于您正在使用这些方法来设置和获取值,因此您应该考虑使用 @property .
  5. Shapes.__init__(self, length, width) 调用不正确。
    • 你需要查看super
    • length, width 没有在这里定义。

关于Python shell 没有显示错误,但程序没有运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29592566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com