如果 Ruby 和 Python 都允许猴子修补,为什么 Ruby 中的争议更大?

2024-03-18

在我听说过的许多关于 Ruby 的讨论中,人们都表达了对这种语言的保留意见,猴子补丁问题成为他们最关心的问题之一。

然而,我很少听到在 Python 环境中提出相同的论点,尽管它在 Python 语言中也是允许的。

为什么会有这样的区别?

Python 是否包含不同类型的保护措施来最大限度地降低此功能的风险?


这是一种在 Python 中较少应用的技术,部分原因是 Python 中的“核心”类(那些用 C 实现的类)实际上不可修改。另一方面,在 Ruby 中,由于其内部实现方式(不是更好,只是不同),几乎任何内容都可以动态修改。

从哲学上讲,Python 社区中往往不赞成这种做法,但在 Ruby 世界中显然不那么常见。我不知道你为什么断言它更具争议性(你能链接到权威参考文献吗?) - 我的经验是,如果用户应该意识到可能的后果,猴子修补是一种可接受的技术。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 Ruby 和 Python 都允许猴子修补,为什么 Ruby 中的争议更大? 的相关文章

随机推荐

  • 重音字符不显示

    我有一个要求 将电子邮件发送给用户 他可以直接回复该电子邮件 并且该电子邮件的内容将发布在他的帐户中 问题是当用户从电子邮件中发布内容时 重音字符无法正确显示 我使用发送电子邮件MailMessage class message BodyE
  • MX记录查找和检查

    我需要创建一个工具来检查域的实时 mx 记录是否符合预期 我们的一些员工在摆弄这些记录时遇到了问题 导致所有传入的邮件都被重定向到空白 现在我不会撒谎 我根本不是一个称职的程序员 我已经阅读了大约 40 页的 深入 Python 可以阅读和
  • 如何终止 java 上的远程 Eclipse 调试

    我正在远程调试一个java应用程序 它通常运行良好 然而 我正在编写新的代码 现在我到达一行 我想终止程序 但唯一可用的按钮是暂停和断开连接 当然 挂起不会终止 断开连接会停止调试 但会使远程应用程序处于任何状态 然后我必须重新启动它 有一
  • 将宽度和高度设置为 React-native 模式

    我无法使用配置模态高度和宽度style财产 还有其他方法可以设置模态高度和宽度吗
  • 如何在 ASP.NET MVC 3 中发布文件数组?

    我希望能够以一种形式发布多个文件 我想将这些文件作为文件数组传递 例如我想这样做
  • 查找与某个模式匹配的所有文件名

    我正在尝试找到一种方法来列出与此模式匹配的文件夹中的所有文件名 20131106XXXXX pdf 前缀是日期 内容和长度XXXX不同文件有所不同 我只关心 pdf 文件 任何人都可以建议一种方法来做到这一点吗 Try this list
  • 厨师兼顾客中途死亡

    最近 我们开始遇到厨师客户在跑步过程中死亡的问题 因为我们在通常进行得更快的跑步列表的各个部分上花费了更多的时间 我使用的是家庭 Wi Fi 而我的同事使用的是工作 Wi Fi 该 Wi Fi 本身也存在一些连接问题 如果在 Chef cl
  • Django Rest Framework - 序列化器中的字段级验证

    我有一个序列化器 我正在尝试添加字段级验证 我需要验证序列化的某些字符字段是否为空 以及布尔字段是 true 还是 false 我有这个序列化器 但即使 Ficha publicada 为 false 我也不会返回错误 class Publ
  • 取消注册已注册的 filewatcher 事件不起作用

    我想用powershell查看一个文件夹 我是PS初学者 当我启动脚本时 该脚本只能运行一次 但是 当我因为更改了一些脚本代码而必须再次重新启动脚本时 我收到此错误消息 Cannot subscribe to the specified e
  • 如何将选择字段的文本转换为图标?

    救救吧 伙计们 我的共享点页面中有一个选择字段 其中的选项如下 1 Go 2 Warning 3 Stop 现在 我希望它以图标而不是文本的形式出现在列表中 我有一个可用的 jquery 脚本 但需要很长时间才能搜索所有列表中包含的文本 而
  • 无法获取当前用户:没有可用的 RequestContext

    使用 xsuaa approuter 登录获取登录的用户对象时出现以下异常 User currentUser UserAccessor getCurrentUser 我要在不使用 GuiceFilter 的情况下获取 currentUser
  • 我可以使用 Python 为所有主流浏览器开发扩展吗?

    我可以用吗Python为所有主流浏览器开发扩展 如果不是 那么我需要了解哪些语言来开发扩展 Chrome Firefox Safari IE Opera 大多数扩展只是捆绑的 HTML CSS JS 和图像文件 以及一些元数据 你需要精通
  • 设计方法:过载与开关?

    关于封装设计的性能和可扩展性 最好是 重载 函数名称 让 Mathematica 根据模式 条件 测试以及系统对定义的排序方式来确定要使用哪个版本 或者使用 Switch 或类似命令 构建单个函数来直接求值 Mathematica 的表达能
  • 使用 Flexbox 垂直居中项目

    我正在尝试使用 CSS 的 flexbox 垂直居中项目 而且 我知道如何使用非供应商前缀的代码来做到这一点 但即使使用供应商前缀 我也无法让它在 Webkit Chrome 中工作 我正在尝试垂直对齐 trigger 中的跨度 这是我的C
  • 更新到 Xcode 10.2 后,构建在 testflight 上黑屏

    我的应用程序完美运行 我已将 Xcode 更新到最新的 10 2 版本 但发生了一些奇怪的事情 与任何更新一样 该应用程序在调试器上运行顺利 完全没有问题 当我将一个版本存档到 testflight 时 该版本显示启动画面 然后进入黑屏 不
  • 如何安装 DB2 ODBC 或 OLEDB 驱动程序

    我已经在 Windows 7 Pro 上安装了 IBM DB2 Database Express 现在 我想创建 C 代码以便在 DB2 表中选择 插入 更新记录 我花了一整天的时间在互联网上搜索有关如何安装 OLEDB 或 ODBC 驱动
  • vue js 2 对表格进行排序

    我有两个关于 vue js 2 的问题和一个小提琴 https jsfiddle net tmun9cxa 1 https jsfiddle net tmun9cxa 1 当您单击列标题时 为什么我的排序不起作用 解决办法是什么 如何让搜索
  • 指定 PHP 代码来选择日期和 3 天前的记录

    我正在尝试从 SQL 表中调用仅 3 天前的数据 我的表中有一个磅日期列 并且是日期格式 我已尝试以下操作 但根本没有从查询中得到任何结果 result mysql query SELECT DATE FORMAT datetime y m
  • Ruby:如何递归查找并删除空目录?

    我正在尝试编写一些 ruby 它会递归地搜索给定目录中的所有空子目录并删除它们 想法 注意 如果可能的话 我想要一个脚本版本 这既是实际需要 也是帮助我学习的东西 In ruby Dir select d File directory d
  • 如果 Ruby 和 Python 都允许猴子修补,为什么 Ruby 中的争议更大?

    在我听说过的许多关于 Ruby 的讨论中 人们都表达了对这种语言的保留意见 猴子补丁问题成为他们最关心的问题之一 然而 我很少听到在 Python 环境中提出相同的论点 尽管它在 Python 语言中也是允许的 为什么会有这样的区别 Pyt