鱼C论坛

 找回密码
 立即注册
查看: 1988|回复: 2

[已解决]没看懂小甲鱼的例子......

[复制链接]
发表于 2023-4-19 21:49:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
最佳答案
2023-4-19 22:19:44
这是一个关于几何形状的面向对象编程例子。首先,让我们分解代码,了解每个类和它们的方法。

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() 方法来计算各自的面积。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-19 21:58:19 | 显示全部楼层
这个代码是一个面向对象的python程序,有3个子类square,circle和triangle继承了父类shape。在每个子类中,我们可以定义不同形状的区域计算方法,并通过类构造函数来初始化自己的特定属性。

当s = square(5)被调用时,__init__方法就被调用并设置self.name = "正方形",因此s.name返回值是'正方形'。同样的逻辑也适用于其他子类。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-19 22:19:44 | 显示全部楼层    本楼为最佳答案   
这是一个关于几何形状的面向对象编程例子。首先,让我们分解代码,了解每个类和它们的方法。

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() 方法来计算各自的面积。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 15:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表