摘要:在Python语言入门中,我们想调用对象上的某一个方法,这个方法名保存在字符串中,我们想通过这个字符串来调用该方法。希望对大家学习Python语言入门有所帮助。
在Python语言入门中,我们想调用对象上的某一个方法,这个方法名保存在字符串中,我们想通过这个字符串来调用该方法。希望对大家学习Python语言入门有所帮助。
1 使用getattr()
import math class Point: def __init__(self,x,y): self.x = x self.y = y def __repr__(self): return 'Point({!r:},{!r:}'.format(self.x, self.y) def distance(self,x,y): return math.hypot(self.x-x, self.y-y) p = Point(2, 3) d = getattr(p, 'distance')(0, 0)
通过getattr()就可以寻找到相关方法并返回该方法,直接用就可以
2 使用operator.methodcaller()
import operator
d = operator.methodcaller('distance', 0, 0)(p)
print(d)
同样也达到了我们想要的结果。
如果想通过名称来查询方法并提供同样的参数反复调用该方法,那么operator.methodcaller()是很有用的。
points = [Point(12,5),Point(3,4),Point(6,9)] print(points) points.sort(key=operator.methodcaller('distance',0,0)) print(points)
调用一个方法实际上涉及到两个单独的步骤,一个时查询属性,一个时函数调用,因此要调用一个方法,可以使用getattr()来查询相应的方法,只要把查询到的方法当做函数使用就好。
与getattr()不同的是,operator.methodcaller()创建了一个可以调用的方法,我们需要为其提供相应的self参数,也就是相应的对象的实例就可以直接使用。
通过包含在字符串中的名称来调用方法,这种方式常出现在需要模拟case语句或者访问者模式的变体中,以后在分享更加高级的访问者模式。
本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言Python频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号