|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这个是小甲鱼课上的题, s.name 为什么会返回 '正方形'
>>> class Shape:
... def __init__(self, name):
... self.name = name
... def area(self):
... pass
...
>>> class Square(Shape):
... def __init__(self, length):
... super().__init__("正方形")
... self.length = length
... def area(self):
... return self.length * self.length
...
>>> class Circle(Shape):
... def __init__(self, radius):
... super().__init__("圆形")
... self.radius = radius
... def area(self):
... return 3.14 * self.radius * self.radius
...
>>> class Triangle(Shape):
... def __init__(self, base, height):
... super().__init__("三角形")
... self.base = base
... self.height = height
... def area(self):
... return self.base * self.height / 2
...
>>> s = Square(5)
>>> c = Circle(6)
>>> t = Triangle(3, 4)
>>> s.name
'正方形'
>>> c.name
'圆形'
>>> t.name
'三角形'
>>> s.area()
25
>>> c.area()
113.03999999999999
>>> t.area()
6.0
这是一个关于几何形状的面向对象编程例子。首先,让我们分解代码,了解每个类和它们的方法。
1、Shape 类:它是一个基类,有两个方法。
- __init__(self, name):初始化方法,将形状的名称(如正方形、圆形或三角形)保存在 self.name 属性中。
- area(self):一个空方法,将在子类中重写。
2、Square 类:它是 Shape 类的子类,代表正方形。
- __init__(self, length):初始化方法,调用父类 Shape 的初始化方法,传入形状名称 "正方形",并设置正方形的边长 length。
- area(self):计算正方形的面积,返回边长的平方。
3、Circle 类:它是 Shape 类的子类,代表圆形。
- __init__(self, radius):初始化方法,调用父类 Shape 的初始化方法,传入形状名称 "圆形",并设置圆的半径 radius。
- area(self):计算圆形的面积,返回 3.14 * radius * radius。
4、Triangle 类:它是 Shape 类的子类,代表三角形。
- __init__(self, base, height):初始化方法,调用父类 Shape 的初始化方法,传入形状名称 "三角形",并设置三角形的底 base 和高 height。
- area(self):计算三角形的面积,返回 base * height / 2。
接下来,我们创建了三个不同形状的实例:一个正方形(边长为5)、一个圆形(半径为6)和一个三角形(底为3,高为4)。
正方形的实例 s 被创建后,通过调用 super().__init__("正方形"),Square 类的初始化方法会调用父类 Shape 的初始化方法,并将形状名称 "正方形" 传入。这样,s.name 属性就被设置为 "正方形",因此 s.name 返回 "正方形"。
类似地,圆形实例 c 的 name 属性被设置为 "圆形",三角形实例 t 的 name 属性被设置为 "三角形"。
最后,我们调用了这些实例的 area() 方法来计算各自的面积。
|
|