问题标签 [monkeypatching]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Python 中修补类
假设我有一个要添加额外属性的 Python 类。
有没有区别
并使用类似的东西:
?
如果不是,为什么人们似乎做第二个而不是第一个?(例如这里http://concisionandconcinnity.blogspot.com/2008/10/chaining-monkey-patches-in-python.html)
c# - 在 IronPython 中重新声明 .net 类
谁能告诉我是否可以在 IronPython 中重新声明一个 C# 类?如果我有一个 C# 类,我可以从 IronPython 中对其进行猴子补丁吗?
django - 在不更改原始 Django App 的情况下向 Django FlatPages 添加功能
我想在 Django FlatPage 数据库模型中添加一个字段,但我真的不知道如何在不编辑原始应用程序的情况下扩展它。
我想要做的是将以下字段添加到模型中:
如何将它添加到 FlatPage 模型?
提前致谢
ruby-on-rails - 重写控制器中的基类方法
我试图欺骗一个非常复杂的黑盒子以不同的方式显示一些浮点数(它是 Gruff 图形库,所以它被渲染为图像)。
在控制台中,我可以粘贴这个:
我会看到
但是如果我将相同的代码粘贴到控制器中,我会看到
为什么我不能在控制器中替换 Float.to_s?我也将接受对“什么是更好的方法来实现这一点?”这个问题的回答。
ruby-on-rails - 如何让 Rails 停止重新加载我的 gem?
我有一颗宝石:
我将它加载到 Rails 中:
并使用它:
但我需要以特定于环境的方式对其进行修补:
不幸的是,MyGem
每次请求都会重新加载,所以我的猴子补丁没用。
我检查过load_once_paths
:
知道如何获得我想要的效果吗?
ruby-on-rails - 修补红宝石
在 Rails 应用程序中将简单补丁应用到 Ruby gem 的最佳方法是什么?
是否可以保持原始 gem 代码不变?
python - 如何动态地将属性添加到类中?
目标是创建一个行为类似于 db 结果集的模拟类。
因此,例如,如果使用 dict 表达式返回数据库查询{'ab':100, 'cd':200}
,那么我希望看到:
起初我想也许我可以这样做:
但c.ab
返回一个属性对象。
用替换setattr
线k = property(lambda x: vs[i])
根本没有用。
那么在运行时创建实例属性的正确方法是什么?
PS 我知道如何使用该__getattribute__
方法?
python - Django 和猴子补丁问题
我最近开始在业余时间尝试使用 Django 开发一些 Web 应用程序。在为一个人设计数据模型时,我遇到了使用继承定义网站用户或使用框架已经提供的 User 类的猴子修补技术的两难境地。
我试图通过(在没有错误地定义我的所有模型等之后,根据python manage.py validate
)添加一个字段:
User.add_to_class('location', models.CharField(max_length=250,blank=True))
并执行了syncdb
命令。但是,我不断收到此错误
OperationalError:没有这样的列:auth_user.location
无论我是在站点的管理员视图中还是在 manage.py shell 中。我必须缺少一个额外的步骤,但是关于整个猴子修补技术的文档似乎有限。所以我在诉诸继承之前请你帮忙。当然,欢迎任何代码、提示或指向其他文档的指针。
提前致谢。
PS。我知道这种技术很丑陋,而且可能是不明智的。;)
python - 是否可以在 python 中转移模块?(ResourceX 转移到 ResourceXSimulated)
我想模拟导入模块(ResourceX)的 MyApp,该模块需要当时不可用且无法工作的资源。
一个解决方案是制作并导入 ResourceX 的模拟模块(名为 ResourceXSimulated)并将其作为 ResourceX 转移到 MyApp。我想这样做是为了避免破坏大量代码并从 MyApp 获取各种异常。
我正在使用 Python,它应该类似于:
“将 ResourceX 模拟为 ResourceX 导入”
“ResourceX.getData()”,实际上调用了 ResourceXSimultated.getData()
期待了解 Python 是否支持这种重定向。
干杯。
附加信息:我可以访问源文件。
更新:我正在考虑向 MyApp 添加尽可能少的关于使用 fake 模块的代码,并将此代码添加到 import 语句附近。
ruby - 扩展 uniq 方法
这是 Ruby 1.8 问题:
我们都知道如何使用Array#uniq
:
但是我想知道我们是否可以通过猴子修补它来处理复杂的对象。当前的行为是这样的:
请求的是: