【发布时间】:2020-12-04 22:03:12
【问题描述】:
我有一个类 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):
super().__init__(length, length)
self.length = length
def set_width(self, length):
super().__init__(length, length)
self.length = length
def set_height(self, length):
super().__init__(length, length)
self.length = length
def __repr__(self):
return f"Square(side={self.length})"
每次我想改变值时,我都会调用 super()。init()。
我想要的不是在 Square 类中明确定义 set_height 和 set_width ,有没有一种方法可以通过调用 set side 将高度和宽度设置为 length 并且 str repr 也应该显示新的 set 边? 另外,我觉得有比我做的更好的方法来做到这一点。
【问题讨论】:
标签: python class oop inheritance subclass