前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python 通过字符串方式调用方法operator.methodcaller

python 通过字符串方式调用方法operator.methodcaller

作者头像
用户5760343
发布于 2019-12-12 10:03:23
发布于 2019-12-12 10:03:23
1.4K00
代码可运行
举报
文章被收录于专栏:sktjsktj
运行总次数:0
代码可运行

最简单的情况,可以使用 getattr() :

import math

class Point: def init(self, x, y): self.x = x self.y = y

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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) # Calls p.distance(0, 0) 另外一种方法是使用 operator.methodcaller() ,例如:

import operator operator.methodcaller('distance', 0, 0)(p) 当你需要通过相同的参数多次调用某个方法时,使用 operator.methodcaller 就很方便了。 比如你需要排序一系列的点,就可以这样做:

points = [ Point(1, 2), Point(3, 0), Point(10, -3), Point(-5, -7), Point(-1, 8), Point(3, 2) ]

Sort by distance from origin (0, 0)

points.sort(key=operator.methodcaller('distance', 0, 0))

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
几个Python“小伎俩”(续)
Python Cookbook的下半部分笔记~ Chap 7 函数 将元数据信息附加到函数参数上 函数的参数注解可以提示程序员该函数应该如何使用,这是很有帮助的。比如,考虑下面这个带参数注解的函数: def add(x:int, y:int) -> int: return x + y python解释器并不会附加任何语法意义到这些参数注解上。但参数注解会给阅读代码的人提供提示,并且一些第三方工具和框架可能会为注解加上语法含义。这些注解也会出现在文档中: help(add) Help on fu
NewBeeNLP
2020/08/26
5350
Python学习——数据模型/特殊方法
数据模型其实是对Python框架的描述,它规范了这门语言自身构架模块的接口,这些模块包括但不限于序列、迭代器、函数、类和上下文管理器。简单来说,数据模型就是Python自身的数据类型,及其包含的特殊方法。这些特殊方法在Java中也被成为‘魔术方法’。
陆勤_数据人网
2020/11/03
5030
Python学习——数据模型/特殊方法
python之利用魔术方法实现自己定义的二维向量
from math import hypot class Vector: def __init__(self,x,y): self.x = x self.y = y #将一个对象以字符串的形式表示,对比java的tostring方法 def __repr__(self): return "Vector(%r,%r)" % (self.x,self.y) #用于计算向量的模 def __abs__(self):
西西嘛呦
2020/08/26
4950
python之利用魔术方法实现自己定义的二维向量
python学习笔记6.9-通过字符串访问类的方法
本文介绍了如何通过字符串访问类的方法,包括使用getattr()和operator.methodcaller()两种方法。第一种方法可以获取对象上所有可用的方法,然后通过字符串进行调用;第二种方法则需要提供完整的函数调用,包括self参数,需要将返回的方法用作函数使用。这两种方法都实现了通过字符串来访问类的方法,具有很高的灵活性,可以用于解决一些特定的问题。
锦小年
2018/01/02
1.1K0
Python基础-5 常用的数据结构
构造器会返回一个列表,其中的项与iterable中的项值和顺序都相同。iterable是一个可迭代对象。
一只大鸽子
2022/12/06
1.1K0
Python基础-5  常用的数据结构
python operator模块学习
operator模块是python中内置的操作符函数接口,它定义了一些算术和比较内置操作的函数。operator模块是用c实现的,所以执行速度比python代码快。
用户2936342
2018/08/27
4550
Python——花式打印对象的若干种方法
我们先从类和对象当中最简单的打印输出开始讲起,打印一个实例是一个非常不起眼的应用,但是在实际的编程当中却非常重要。原因也很简单,因为我们debug的时候往往会想看下某个类当中的内容是不是符合我们的预期。但是我们直接print输出的话,只会得到一个地址。
TechFlow-承志
2020/04/16
5.6K0
《Go 语言程序设计》读书笔记 (三) 方法
在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法。
KevinYan
2019/12/30
3450
Python Data Model
概述 最近在看《Fluent Python》一书,书中解释了Python很多重要的设计理念和实践,下面是我在看此书的读书笔记。Python的设计思想主要体现在它的数据模型上,而数据模型所描述和传递的API更能让你创造出和抽象出自己对象世界。数据模型是对Python框架的描述。 magic and dunder:magic是特殊方法的昵称,dunder是双下划线. Data Model 深入 为了深入了解Python Data Model的内部实现,我们先看一下代码示例: # -*- coding:utf-
吕海峰
2018/04/03
8090
python技巧分享(四)
30 Jan 2018 python技巧分享(四) 这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。 1 如何打印更易读的类 不推荐方式 class Point(object): def __init__(self, x, y): self.x = x self.y = y p = Point(3, 4) print p # <__main__.Point object a
俊采
2018/05/15
5660
Python中反射
运行时,区别于翻译时,指的是程序被加载到内存中执行的时候。 反射,reflection,指的是运行时获取类型定义信息。 一个对象能够在运行时,像照镜子一样,反射出其类型信息。简单说,在Python中,能够通过一个对象,找出其type、class、attribute或method的能力,称为反射或自省。 具有反射能力的函数有type(),isinstance(),callable().dir().getattr()等
用户7886150
2020/12/20
8790
Python 字符串格式化操作 - format方法
字符串操作 对于 %, 官方以及给出这种格式化操作已经过时,在 Python 的未来版本中可能会消失。 在新代码中使用新的字符串格式。因此推荐大家使用format()来替换 %.
叉叉敌
2020/02/20
3900
python奇遇记:深入的了解函数
本文介绍了Python中函数的一些特性,包括高阶函数、匿名函数、闭包、装饰器以及类型注解等。同时,本文还介绍了一些实例,以帮助读者更好地理解这些概念。
企鹅号小编
2018/01/04
4820
Python指南:面向对象程序设计
接下来将基于使用程序对圆进行描述这一问题,来解释纯过程型程序设计方法存在的问题。用于描述一个圆所需要的最少数据包括圆心坐标(x, y)以及圆的半径,简单的方法是使用一个三元组对圆进行描述,比如:circle = (25, 80, 12) 。
王强
2018/08/09
5610
Python指南:面向对象程序设计
流畅的Python 1. Python数据模型(特殊方法 __func__())
特殊方法:https://docs.python.org/3/reference/datamodel.html
Michael阿明
2021/09/06
2620
啃书---流畅的python : 第一章
假设k个维度dim_1,dim_2,dim_3....dim_k ; 每个维度的可能取值集合分别是V_1,V_2,...V_k 假设维度$dim_i$的当前值为v_i \in V_i ,则将这k个维度的组合映射到一个唯一值的公式可以表示为:
逸澄
2025/01/26
660
python 自定义类(特殊方法)
https://docs.python.org/3/library/string.html#formatspec
Michael阿明
2021/09/06
5980
《流畅的Python》第九章学习笔记
使用双下划线开头的属性会存入到__dict__属性中,并且会在前面加上一个下划线和类名。
zx钟
2021/01/07
3280
Python面向对象的魔术方法
在Python中,所有以__双下划线包起来的方法,都统称为魔术方法。比如最常见的 __init__ 。
职场亮哥
2020/10/10
7640
python functools.partial重复参数
如果需要减少某个函数的参数个数,你可以使用 functools.partial() 。 partial() 函数允许你给一个或多个参数设置固定的值,减少接下来被调用时的参数个数。 为了演示清楚,假设你有下面这样的函数:
用户5760343
2019/10/21
7780
相关推荐
几个Python“小伎俩”(续)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文