我们有三个图形类,Circle,Triangle,Rectangle
求面积的库
TRC_area.py
class Triangle:
def __init__(self,a,b,c):
self.a,self.b,self.c = a,b,c
def get_area(self):
a,b,c = self.a,self.b,self.c
p = (a+b+c)/2
return (p * (p-a)*(p-b)*(p-c)) ** 0.5
class Rectangle:
def __init__(self,a,b):
self.a,self.b = a,b
def getArea(self):
return self.a * self.b
class Circle:
def __init__(self,r):
self.r = r
def area(self):
return self.r ** 2 * 3.14159
调用
import TRC_area
shape1 = TRC_area.Triangle(3, 4, 5)
shape2 = TRC_area.Rectangle(4, 5)
shape3 = TRC_area.Circle(1)
def get_area(shape):
method = ['get_area', 'getArea', 'area']
for name in method:
# getattr可以获取该字符串中是否存在某个方法,返回value,内存地址值
f = getattr(shape, name, None)
if f:
return f()
class Run:
# print(get_area(shape1))
# print(get_area(shape2))
# print(get_area(shape3))
# map(func, *iterables) --> map object,让列表中的参数分别传入函数中
a = map(get_area, [shape1, shape2, shape3])
b = list(a)
print(b)
if __name__ == '__main__':
Run()
# [6.0, 20, 3.14159]