[英]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.