如何在python中使用子类修改超类的属性?

我有一个Rectangle类

class Rectangle:
    def __init__(self,width,height):
        self.width = width
        self.height = height
        
    def set_width(self,width):
        self.width = width
        
    def set_height(self,height):
        self.height = height
        
    def get_area(self):
        return self.width * self.height
    
    def get_perimeter(self):
        return self.width*2 + self.height*2
    
    def get_diagonal(self):
        return (self.width ** 2 + self.height ** 2) ** .5
    
    def get_picture(self):
        picture = str()
        if self.width >= 50 | self.height >= 50:
            return "Too big for picture."
        
        for height in range(self.height):
            picture += "*"*self.width+"\n"
            
        return picture
    
    def __repr__(self):
        return f"Rectangle(width={self.width},height={self.height})"

以及它的一个子类Square

class Square(Rectangle):
    def __init__(self,length):
        super().__init__(length,length)
        self.length = length
    
    def set_side(self,length)
        self.length = length
    
    def set_width(self,length)
        self.length = length        
        
    def set_height(self,length)
        self.length = length
        
    def __repr__(self):
        return f"Square(side={self.length})"

在这里,我每次想更改值时都调用super()。 init ()。

我想要的不是代替也在Square类中显式定义set_height和set_width,有没有一种方法可以通过调用set side来设置高度和宽度到长度,并且str repr也应该显示新的set侧? 另外,我觉得比我所做的事还有更好的方法

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...