python - 有没有办法覆盖 Python 中现有(系统)类的方法?
问题描述
我正在准备一个涉及排序的考试问题。我想禁止学生list.sort()
在他们的解决方案中使用。出于这个原因,我正在考虑覆盖该方法(例如通过引发警告的方法)。有没有一种方法可以在 Python 3 中轻松完成?使用反射?(或另一种解决方案,以便list.sort()
学生不能在他们的代码中使用。)
解决方案
最后我们选择了一位同事指出的这个解决方案,这里为了示例而进行了简化。curse
函数 fromforbiddenfruit
允许您简单地覆盖现有函数,例如sort
:
from forbiddenfruit import curse
def f ( v ):
print ( "Error" )
curse(list,"sort", f)
l = [5,4,3,1]
l.sort ()
print (l)
因此,在这段代码中,我们用sort
一个打印错误的函数代替了学生不能再依赖传统的代码sort
。
推荐阅读
- sql-server - 如何在 MSSQL while 循环中遍历表的列名并将值传递给 UDF
- c++ - 使用已删除的副本存储结构并将构造函数移动到容器中
- python-3.x - Pycharm 错误消息“类 {class} 的未解析属性引用 {attr/method}”
- html - 引入列表后,我的电子邮件总是一团糟
- c# - 来自 C# 的 Azure SQL DB 连接问题
- javascript - 在使用 getelementbyclass 之前我应该等待 domReady 吗?
- javascript - 如何根据选择切换元素?
- python - 如果在前一个函数中收到响应,则重新运行特定的 python 函数
- jquery - 如何使函数选择并在新附加的元素上执行?
- python - 在 pandastable 中显示下拉菜单