写一个Copyable类,用一个方法,计算长宽高分别为2,5,4的长方体,底面半径为4,高为5的圆柱体,半径为5的球体的体积
时间: 2024-03-05 19:49:52 浏览: 129
求球体体积 方便快捷
好的,这里是一个Copyable类的实现,同时包含了你的要求:
```python
import copy
import math
class Copyable:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def volume(self):
pass
class Cuboid(Copyable):
def __init__(self, a, b, c):
super().__init__(a, b, c)
def volume(self):
return self.a * self.b * self.c
class Cylinder(Copyable):
def __init__(self, r, h):
self.r = r
self.h = h
def volume(self):
return math.pi * self.r ** 2 * self.h
class Sphere(Copyable):
def __init__(self, r):
self.r = r
def volume(self):
return 4 / 3 * math.pi * self.r ** 3
if __name__ == '__main__':
cuboid = Cuboid(2, 5, 4)
cylinder = Cylinder(4, 5)
sphere = Sphere(5)
print("Cuboid volume: ", cuboid.volume())
print("Cylinder volume: ", cylinder.volume())
print("Sphere volume: ", sphere.volume())
cuboid_copy = copy.deepcopy(cuboid)
cylinder_copy = copy.deepcopy(cylinder)
sphere_copy = copy.deepcopy(sphere)
print("Cuboid copy volume: ", cuboid_copy.volume())
print("Cylinder copy volume: ", cylinder_copy.volume())
print("Sphere copy volume: ", sphere_copy.volume())
```
输出结果为:
```
Cuboid volume: 40
Cylinder volume: 251.32741228718345
Sphere volume: 523.5987755982989
Cuboid copy volume: 40
Cylinder copy volume: 251.32741228718345
Sphere copy volume: 523.5987755982989
```
以上代码中,我们定义了三个不同的类,分别对应长方体、圆柱体和球体,并且它们都继承自 Copyable 类,实现了 volume 方法。在主函数中,我们分别创建了一个长方体、一个圆柱体和一个球体,并计算了它们的体积。接着,我们通过调用 deepcopy 方法,对这三个对象进行了拷贝,并计算了它们的体积。最后,将每个对象的体积输出到控制台上。
注意,我们在拷贝对象时使用了 deepcopy 方法,这是因为如果我们使用浅拷贝(copy 方法),则只会拷贝对象的引用,而不是对象本身。这样做可能会导致我们修改一个对象时,其他对象也会受到影响。因此,我们使用 deepcopy 方法,确保每个对象都是独立的,互不影响。
阅读全文