我已经阅读了很多关于为什么Python没有真正的私有变量的SO线程,我理解它适用于大多数应用程序.
这是我的问题:我正在创建一个类项目.在这个课程项目中,学生设计一个需要多项选择测试的代理.我们希望能够立即对代理商的答案进行评分,以便代理商可以从他们对先前问题的错误答案中学习.因此,我们需要将每个问题的正确答案存储在程序中.学生在本地计算机上运行这些项目,因此他们可以看到所有测试人员的代码.他们无法对其进行修改 - 我们会在将测试人员代码更改时覆盖他们对测试人员代码的任何更改.他们只需输入代表其代理人的新文件即可.
在Java中,这很简单.在Problem类中,有一个私有的correctAnswer变量.correctAnswer始终存储问题的正确答案.代理只能通过checkAnswer方法读取correctAnswer,并且为了调用checkAnswer,代理必须实际回答以后无法更改的问题.
我需要在Python中重新创建这种行为,到目前为止,我不知所措.似乎无论程序在哪里存储了correctAnswer,代理都可以访问它 - 我熟悉下划线约定,但在这个问题中,我需要代理无法访问正确的答案.我唯一能想到的就是在我们测试学生的代码时命名正确的答案,以便他们的代理人无法预测它将被称为什么,但这是一个不优雅的解决方案.
有什么建议?代理能够读取正确的答案是可以接受的,只要我们能够检测到它们何时读取它(因此我们可以将'代理的答案'变量设置为只读后...但是我需要一种方法来做那也是,oof).
改变规则.不要在程序中存储正确的答案.将正确答案存储在安全的服务器上:
def checkAnswer(studentAnswer):
response = requests.get('http://teacher-server.example.edu/checkAnswer?%s'%studentAnswer)
return response.text == 'Yes'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |