2271040868 发表于 2023-4-19 21:49:20

没看懂小甲鱼的例子......

这个是小甲鱼课上的题, s.name为什么会返回'正方形'{:5_99:}



>>> 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

sfqxx 发表于 2023-4-19 21:58:19

这个代码是一个面向对象的python程序,有3个子类square,circle和triangle继承了父类shape。在每个子类中,我们可以定义不同形状的区域计算方法,并通过类构造函数来初始化自己的特定属性。

当s = square(5)被调用时,__init__方法就被调用并设置self.name = "正方形",因此s.name返回值是'正方形'。同样的逻辑也适用于其他子类。

isdkz 发表于 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() 方法来计算各自的面积。
页: [1]
查看完整版本: 没看懂小甲鱼的例子......