# python实例方法调用-python如何通过实例方法名字调用方法

Circle,Triangle

#!/usr/bin/python3

from math import pi

class Circle(object):

def getArea(self):

return round(pow(self.radius, 2) * pi, 2)

class Rectangle(object):

def __init__(self, width, height):

self.width = width

self.height = height

def get_area(self):

return self.width * self.height

# 定义统一接口

def func_area(obj):

# 获取接口的字符串

for get_func in ["get_area", "getArea"]:

# 通过反射进行取方法

func = getattr(obj, get_func, None)

if func:

return func()

if __name__ == "__main__":

c1 = Circle(5.0)

r1 = Rectangle(4.0, 5.0)

# 通过map高阶函数，返回一个可迭代对象

erea = map(func_area, [c1, r1])

print(list(erea))

#!/usr/bin/python3

from math import pi

from operator import methodcaller

class Circle(object):

def getArea(self):

return round(pow(self.radius, 2) * pi, 2)

class Rectangle(object):

def __init__(self, width, height):

self.width = width

self.height = height

def get_area(self):

return self.width * self.height

if __name__ == "__main__":

c1 = Circle(5.0)

r1 = Rectangle(4.0, 5.0)

# 第一个参数是函数字符串名字，后面是函数要求传入的参数，执行括号中传入对象

erea_c1 = methodcaller("getArea")(c1)

erea_r1 = methodcaller("get_area")(r1)

print(erea_c1, erea_r1)

• 0
点赞
• 0
评论
• 0
收藏
• 一键三连
• 扫一扫，分享海报

07-08 3634
04-28 1157
05-06 2483
03-09 2137
03-30 6万+
04-29 890