一个Python问题,求解答

问题遇到的现象和发生背景

在XY坐标上放置一个矩形。 上下的边与X轴平行,左右的边与Y轴平行。
对3-1中的代码2中的Rect的class做如下修改。
Instance变量
x, y: 为长方形左上顶点のx,y坐标
w, h: 和代码2中的宽和高相同
初始化method
调出时,最初的两个参数xy的值和之后的两个参数wh的值进行初始化
points()
调出时没有参数
返回每个顶点的x,y坐标的tuple,顺序为左上、右上、右下、左下。

在3-2中创建两个Rect的class的Instance。 参数的值从执行结果中确定。

问题相关代码,请勿粘贴截图

代码2

 
# 2-1
class Rect:
    def show(self):
        return "w:%s, h:%s" % (self.w, self.h) 
# 2-2 
r1 = Rect()
r1.w = 3
r1.h = 8
r2 = Rect()
r2.w = 5
r2.h = 12

# 2-3 
print(f'r1: {r1.show()}')
print(f'r2: {r2.show()}')
 

代码3

# 3-1

    
# 3-2 写出两个Rect_class的Instance,参数值参照输出结果


# 3-3 输出各个Instance的值
print(f'r1: {r1.show()}, {r1.points()}')
print(f'r2: {r2.show()}, {r2.points()}')

运行结果及报错内容
r1: w:5, h:3, ((5, 10), (10, 10), (10, 7), (5, 7))
r2: w:3, h:2, ((12, 4), (15, 4), (15, 2), (12, 2))

以实现如下效果,可以的话请点击采纳答案。

img

# 3-1
class Rect:
    def __init__(self, x, y, w, h) -> None:
        self.x = x
        self.y = y
        self.w = w
        self.h = h

    def points(self):
        return ((self.x, self.y), (self.x+self.w, self.y), (self.x+self.w, self.y-self.h), (self.x, self.y-self.h))

    def show(self):
        return "w:%s, h:%s" % (self.w, self.h)


# 3-2 写出两个Rect_class的Instance,参数值参照输出结果
r1 = Rect(5, 10, 5, 3)

r2 = Rect(12, 4, 3, 2)


# 3-3 输出各个Instance的值
print(f'r1: {r1.show()}, {r1.points()}')
print(f'r2: {r2.show()}, {r2.points()}')