Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在python包中对内部私有函数进行猴子修补?

如何在python包中对内部私有函数进行猴子修补?
EN

Stack Overflow用户
提问于 2014-01-06 12:42:52
回答 1查看 1.4K关注 0票数 2

在使用包pygal时,我必须更改pygal.util模块中的实用程序函数。此函数由其他模块中的其他函数调用。我该怎么修补这个功能?现在,我已经在dist_packages中编辑了代码,但是必须有一种方法来动态地分配这个函数?

该函数为pygal.util.is_major。我试着用以下方式来做:pygal.util.is_major = lambda x: False,但是它不起作用。我认为这是因为包中的其他模块将此函数导入到它们的本地命名空间中。因此,更改它没有任何效果,因为其他模块已经将该函数的旧版本导入到它们的本地命名空间中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-06 13:18:28

分配给is_major的原因是,在分配给它之前,其他两个pygal模块将is_major导入到它们的本地名称空间。

The pygal.graph.radar模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pygal.util import deg, cached_property, compute_scale, is_major

pygal.graph.graph模块

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pygal.util import (
    is_major, truncate, reverse_text_len, get_texts_box, cut, rad, decorate)

如果您可以在导入这些模块之前对is_major函数进行路径调整,那么它应该可以工作。如果你不能,你可以重新加载图形模块后,猴子补丁。

就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pygal.util
import pygal.graph
import pygal.graph.radar

pygal.util.is_major = my_function
reload(pygal.graph)
reload(pygal.graph.radar)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20958895

复制
相关文章
内部函数和闭包
不止于python
2023/09/05
1700
内部函数和闭包
python安装私有包
你想要安装一个第三方包,但是没有权限将它安装到系统Python库中去。 或者,你可能想要安装一个供自己使用的包,而不是系统上面所有用户。
用户2936342
2018/08/27
1.3K0
Python 私有函数和私有变量
私有函数和私有变量 什么是私有函数和私有变量 无法被实例化后的对象调用的类中的函数与变量 类的内部可以调用私有函数与变量 只希望类内部业务调用使用,不希望被使用者使用 私有函数与私有变量的定义方法 在一个变量或函数前添加__(2个下横线),变量或函数名后边无需添加 class Person(object): def __init__(self, name): self.name = name self.__age = 33 # 私有 def dump(self): print(
Zkeq
2022/05/18
9580
Python中对list进行排序
很多时候,我们需要对List进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序 方法2.用built-in函数sorted进行排序(从2.4开始) 这两种方法使用起来差不多,以第一种为例进行讲解: 从Python2.4开始,sort方法有了三个可选的参数,Python Library Reference里是这样描述的 cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: "cmp=lambda x,y: cmp(x.lower(), y.lower())" key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower" reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once. 以下是sort的具体实例。 实例1: >>>L = [2,3,1,4] >>>L.sort() >>>L >>>[1,2,3,4] 实例2: >>>L = [2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1] 实例3: >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>L.sort(cmp=lambda x,y:cmp(x[1],y[1])) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例4: >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>L.sort(key=lambda x:x[1]) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例5: >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>import operator >>>L.sort(key=operator.itemgetter(1)) >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 实例6:(DSU方法:Decorate-Sort-Undercorate) >>>L = [('b',2),('a',1),('c',3),('d',4)] >>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort >>>A.sort() >>>L = [s[2] for s in A] >>>L >>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)] 以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项 为比较关键字进行排序. 效率比较: cmp < DSU < key 通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当 多关键字比较排序: 实例7: >>>L = [('d',2),('a',4),('b',3),('c',2)] >>> L.sort(key=lambda x:x[1]) >>> L >>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)] 我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用
py3study
2020/01/09
2.4K0
如何在 Core Data 中对 NSManagedObject 进行深拷贝
对 NSMangedObject 进行深拷贝的含义是为一个 NSManagedObject(托管对象)创建一个可控的副本,副本中包含该托管对象所有关系层级中涉及的所有数据。
东坡肘子
2022/07/28
1.5K0
如何在 Core Data 中对 NSManagedObject 进行深拷贝
python|对Python中函数的学习
在python中,定义一个函数需要使用def语句,依次写出函数名,括号,括号中的参数和冒号:,接着在缩进后编写函数,函数的返回值用return语句返回。定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
算法与编程之美
2019/12/16
6440
如何在 Tableau 中对列进行高亮颜色操作?
在做数据分析时,如果数据量比较大,可以考虑使用颜色对重点关注的数据进行高亮操作,显眼的颜色可以帮助我们快速了解数据和发现问题。比如一个数据表可能会有十几到几十列之多,为了更好的看清某些重要的列,我们可以对表进行如下操作——
小马哥的牛棚
2020/08/20
5.8K0
如何在Gitlab流水线中对部署进行控制?
在我们的自动化世界中,为什么要手动做一些事情?手动几乎已成为低效率的代名词。但是,对于CI/CD管道,正确的配置手动作业可能是控制部署并满足合规性要求的好方法。让我们看一下如何定义手动作业以服务于两个重要的场景:控制谁可以去部署,设置手动批准作业。
DevOps云学堂
2020/07/27
1.9K0
如何在Gitlab流水线中对部署进行控制?
如何在Redhat中安装R的包及搭建R的私有源
继上一章如何在Redhat中配置R环境后,我们知道对于多数企业来说是没有外网环境的,在离线环境下如何安装R的包,能否搭建R的私有源对R的包进行管理。
Fayson
2018/03/29
4.2K0
如何在Redhat中安装R的包及搭建R的私有源
在 Python 中对服装图像进行分类
图像分类是一种机器学习任务,涉及识别图像中的对象或场景。这是一项具有挑战性的任务,但它在面部识别、物体检测和医学图像分析等现实世界中有许多应用。
很酷的站长
2023/08/11
5621
在 Python 中对服装图像进行分类
说说Python中猴子补丁是什么?
小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
程序员小猿
2021/01/19
5590
如何在SoMachine V4.x中对SoftMotionWin进行仿真
1、打开以下文件路径,删除或重命名或移动此路径下的CODESYSControl.cfg文件
剑指工控
2022/11/14
8320
如何在SoMachine V4.x中对SoftMotionWin进行仿真
如何在 Kubernetes 中对无状态应用进行分批发布
在 Kubernetes 中针对各种工作负载,提供了多种控制器,其中 Deployment 为官方推荐,被用于管理无状态应用的 API 对象。本文将结合 Deployment 的特性,与常见的发布策略,以及我们在分批发布场景下的实践,做一些分享。
全栈程序员站长
2022/06/30
1.5K0
如何在 Kubernetes 中对无状态应用进行分批发布
如何在yaml文件中引用python函数?
大家对yaml文件还处于比较陌生的阶段,yaml 和 json 文件本质上是一样的,都是静态的文件,当然不能直接引用 python 的函数。 那这时候就有人问到了,那为什么 httprunner 框架可以在yaml文件中引用函数呢?
上海-悠悠
2022/03/03
10.9K4
如何在yaml文件中引用python函数?
使用bandit对目标python代码进行安全函数扫描
在一些对python开源库代码的安全扫描中,我们有可能需要分析库中所使用到的函数是否会对代码的执行环境造成一些非预期的影响。典型的例如python的沙箱逃逸问题,通过一些python的第三方库可以执行系统shell命令,而这就不在python的沙箱防护范围之内了。关于python的沙箱逃逸问题,这里不作展开,这也是困扰业界多年的一个问题,连python官方也提过python的沙箱是没有完美的防护方案的,这里仅作为一个背景案例使用:
DechinPhy
2021/05/21
1.6K0
[1146]python函数之iterrows(), iteritems(), itertuples()对dataframe进行遍历
参考:https://blog.csdn.net/likeyou1314918273/article/details/89514038
周小董
2022/06/13
7380
如何创建私有Python包存储库
Python包的基本脚手架是一个包含与用户交互的代码的__init__.py文件。
良莉
2018/09/03
4.5K0
如何创建私有Python包存储库
Python中面向对象比较简单的内部函数
# 比较简单的内部函数 # 代码部分 class Cat: def __init__(self, new_name): self.name = new_name # 定义一个私有属性 self.__age = 18 print("{}来了".format(self.name)) def __del__(self): print("%s 我去了" % self.name) def __str__(se
benym
2022/07/14
8920
Python数据挖掘——应用toad包中的detect函数进行描述性统计
大数据时代的到来,使得很多工作都需要进行数据挖掘,从而发现更多有利的规律,或规避风险,或发现商业价值。
阿黎逸阳
2023/08/21
9310
Python数据挖掘——应用toad包中的detect函数进行描述性统计
点击加载更多

相似问题

使用super.__init__对Python中的猴子进行修补

314

如何对Ruby模块进行猴子修补

11

用调用旧函数调用python 2中的猴子修补私有实例函数

13

Python猴子补丁私有函数

34

一只猴子如何在python中修补函数?

51
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文