python请用面向对象的方法编程计算圆和矩形的面积。要求定义一个形状基类,圆和矩形是子类。
时间: 2024-05-09 22:18:17 浏览: 6
好的,下面是代码实现:
```python
class Shape:
def area(self):
pass
class Circle(Shape):
def __init__(self, r):
self.r = r
def area(self):
return 3.14 * self.r * self.r
class Rectangle(Shape):
def __init__(self, w, h):
self.w = w
self.h = h
def area(self):
return self.w * self.h
c = Circle(5)
print("圆的面积:", c.area())
r = Rectangle(3, 4)
print("矩形的面积:", r.area())
```
以上代码通过面向对象的方法定义了一个形状基类 Shape,圆和矩形各自作为 Shape 的子类,实现了计算面积的功能。其中,圆的面积计算使用了圆的公式:$3.14 * r * r$,矩形面积计算则直接使用了宽度和高度的乘积。
相关问题
python创建一个表示形状的类,包括计算面积和周长的方法,为圆和矩形实现子类
好的,这是一个简单的示例代码:
```python
import math
class Shape:
def area(self):
pass
def perimeter(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
def perimeter(self):
return 2 * math.pi * self.radius
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
```
在这个例子中,我们首先定义了一个基类 `Shape`,它包括了两个方法 `area` 和 `perimeter`,但它们都是空的方法体。接下来我们定义了两个子类 `Circle` 和 `Rectangle`,它们分别继承了 `Shape` 类,并覆盖了 `area` 和 `perimeter` 方法。在 `Circle` 类中,我们使用了 `math` 模块来计算圆的面积和周长。在 `Rectangle` 类中,我们直接通过长和宽计算矩形的面积和周长。
现在我们可以创建这两个类的实例,并调用它们的方法来计算面积和周长了。例如:
```python
c = Circle(5)
print(c.area()) # 输出 78.53981633974483
print(c.perimeter()) # 输出 31.41592653589793
r = Rectangle(3, 4)
print(r.area()) # 输出 12
print(r.perimeter()) # 输出 14
```
希望这个例子可以帮助你理解如何用 Python 创建一个表示形状的类,并且为圆和矩形实现子类。
用python编写代码,定义一个形状基类,有2个属性:面积和周长,以及两个无返回值的方法:area()和perimeter(),分别计算形状的面积和周长,从基类派生出三个子类:三角形、矩形、圆,重载基类的两个方法。
以下是代码实现:
```python
import math
class Shape:
def __init__(self):
self.area_val = 0
self.perimeter_val = 0
def area(self):
pass
def perimeter(self):
pass
class Triangle(Shape):
def __init__(self, a, b, c):
super().__init__()
self.a = a
self.b = b
self.c = c
def area(self):
s = (self.a + self.b + self.c) / 2
self.area_val = math.sqrt(s * (s - self.a) * (s - self.b) * (s - self.c))
return self.area_val
def perimeter(self):
self.perimeter_val = self.a + self.b + self.c
return self.perimeter_val
class Rectangle(Shape):
def __init__(self, width, height):
super().__init__()
self.width = width
self.height = height
def area(self):
self.area_val = self.width * self.height
return self.area_val
def perimeter(self):
self.perimeter_val = 2 * (self.width + self.height)
return self.perimeter_val
class Circle(Shape):
def __init__(self, radius):
super().__init__()
self.radius = radius
def area(self):
self.area_val = math.pi * self.radius ** 2
return self.area_val
def perimeter(self):
self.perimeter_val = 2 * math.pi * self.radius
return self.perimeter_val
```
接下来可以用以下代码进行测试:
```python
t = Triangle(3, 4, 5)
print("Triangle area:", t.area())
print("Triangle perimeter:", t.perimeter())
r = Rectangle(2, 3)
print("Rectangle area:", r.area())
print("Rectangle perimeter:", r.perimeter())
c = Circle(5)
print("Circle area:", c.area())
print("Circle perimeter:", c.perimeter())
```
输出:
```
Triangle area: 6.0
Triangle perimeter: 12
Rectangle area: 6
Rectangle perimeter: 10
Circle area: 78.53981633974483
Circle perimeter: 31.41592653589793
```