首页 > 解决方案 > 有没有办法覆盖 Python 中现有(系统)类的方法?

问题描述

我正在准备一个涉及排序的考试问题。我想禁止学生list.sort()在他们的解决方案中使用。出于这个原因,我正在考虑覆盖该方法(例如通过引发警告的方法)。有没有一种方法可以在 Python 3 中轻松完成?使用反射?(或另一种解决方案,以便list.sort()学生不能在他们的代码中使用。)

标签: pythonpython-3.xclassmethodsoverriding

解决方案


最后我们选择了一位同事指出的这个解决方案,这里为了示例而进行了简化。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


推荐阅读