[英]Object Oriented Python - rectangle using classes and functions
我正在用 Python 创建一个程序,它将利用面向对象的编程来打印给定矩形的属性。 该项目具有以下限制条件:
本实验的目的是让您练习创建自己的对象。 您将获得一个 main 函数,该函数需要一个(尚未定义的)Rectangle 对象的实例。 您的工作是确定 Rectangle 类需要哪些属性和方法,并创建一个满足要求的类。
- 一次只添加一项功能
- 您可能需要注释掉主要功能的部分以进行测试
- 构造函数应采用 0、1 或 2 个参数(说明多态性)
- 你的类应该是某个东西的子类(说明继承)
- 你的类应该有方法和属性(说明封装)
- 隐藏您的实例变量(使用 __ 技巧)
- 为每个实例变量添加 setter 和 getter 方法
- 使用属性封装实例变量访问
- 并非所有实例变量都是真实的...有些是派生的,应该是只写的
- 您可能不会大幅更改主要功能(除非您正在进行黑带挑战)
- 确保在需要时添加所需的代码以运行主函数
这是标题
40 分
我得到了这个代码来开始:
def main():
print "Rectangle a:"
a = Rectangle(5, 7)
print "area: %d" % a.area
print "perimeter: %d" % a.perimeter
print ""
print "Rectangle b:"
b = Rectangle()
b.width = 10
b.height = 20
print b.getStats()
我应该得到这个输出:
Rectangle a:
area: 35
perimeter: 24
Rectangle b:
width: 10
height: 20
area: 200
perimeter: 60
我已经走了这么远,但我无法让矩形 B 打印宽度和高度你能看看吗?
class Rectangle:
def __init__(self, width=0, height=0):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * self.height + 2 * self.width
def setWidth(self, width):
self.width = width
def setHeight(self, height):
self.height = height
def getStats(self):
return "area: %s\nperimeter: %s" % (self.area(), self.perimeter())
def main():
print ""
print "Rectangle a:"
a = Rectangle(5, 7)
print "area: %s" % a.area()
print "perimeter: %s" % a.perimeter()
print ""
print "Rectangle b:"
b = Rectangle()
b.width = 10
b.height = 20
print b.getStats()
print ""
main()
我目前得到这个输出:
Rectangle a:
area: 35
perimeter: 24
Rectangle b:
area: 200
perimeter: 60
Process finished with exit code 0
不确定我的问题是否正确,但您可能想尝试:
def getStats(self):
return "width: %s\nheight: %s\narea: %s\nperimeter: %s" % (self.width, self.height, self.area(), self.perimeter())
为了满足要求 4 和 6,我建议如下:
class Shape(object):
def area(self):
raise NotImplementedError
def perimeter(self):
raise NotImplementedError
class Rectangle(Shape):
def __init__(self, width=0, height=0):
super(Rectangle, self).__init__() # this is useless in this case, but it's good practice
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * self.height + 2 * self.width
@property
def width(self):
return self.__width
@property
def height(self):
return self.__height
@width.setter
def width(self, width):
self.__width = width
@height.setter
def height(self, height):
self.__height = height
def getStats(self):
return "width: %s\nheight: %s\narea: %s\nperimeter: %s" % (self.width, self.height, self.area(), self.perimeter())
注意:这个作业是我计算机科学课上的一个精确的作业。 虽然欢迎您从堆栈溢出等网站获得帮助,但您仍需对自己的工作负责,如果您从该网站上交代码(可能会或可能不会被接受)我们会知道,我们会认为它是学术性的不当行为。 我们也可能对作业进行了一些悄悄的更改,因此如果您不经仔细考虑就提交此答案,即使您也不太可能获得全部学分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.