一个python问题,求解答

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

要求在2-1中重新定义Rect,原有代码基础上追加一个show(),且show()调用时没有参数,并将此instance的w和h的值作为字符串返回(见2-3中的调用和执行结果中的输出)。

原有代码
class Rect:
    pass

r1 = Rect()
r1.w = 5
r1.h = 4
print('生成了Instance')
r2 = Rect()
r2.w = 12
r2.h = 5
print('生成了Instance')

print(f'r1の宽为{r1.w}, 高为{r1.h}')
print(f'r2の宽为{r2.w}, 高为{r2.h}')

需要追加的代码
# 2-1
class Rect:
    def show(self,r1,r2):  
    self.r1 = r1
    self.r2 = r2
# 2-2 写出两个Rect_class的Instance,参数值参照输出结果

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

输出结果

r1: w:3, h:8
r2: w:5, h:12

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

img


# 2-1
class Rect:
    def show(self):
        return "w:%s, h:%s" % (self.w, self.h)


# 2-2 写出两个Rect_class的Instance,参数值参照输出结果
r1 = Rect()
r1.w = 3
r1.h = 8
r2 = Rect()
r2.w = 5
r2.h = 12

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

# 2-1
class Rect:
    def show(self):
        return f"w:{self.w}, h:{self.h}"

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

r2 = Rect()
r2.w = 5
r2.h = 12

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

输出结果:

r1: w:3, h:8
r2: w:5, h:12

# 2-1
class Rect:
    def show(self):
        return f"w:{self.w}, h:{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()}')
 
# 2-1
class Rect:
    def show(self):
        return   f'r1の宽为{self.w}, 高为{self.h}'
# 2-2 
r1 = Rect()
r1.w = 5
r1.h = 4
r2 = Rect()
r2.w = 12
r2.h = 5
 
# 2-3 
print(f'r1: {r1.show()}')
print(f'r2: {r2.show()}')
 

class Rect:
    # 类似Java的构造函数,有两个参数时执行self.r = arg,没参数时打印w,h
    def show(self, *args):
        if len(args) == 2:
            self.r1 = args[0]
            self.r2 = args[1]
        else:
            return f"w:{self.w}, h:{self.h}"


r1 = Rect()
r1.w = 5
r1.h = 4
print('生成了Instance')
r2 = Rect()
r2.w = 12
r2.h = 5
print('生成了Instance')

print(f'r1: {r1.show()}')
print(f'r2: {r2.show()}')