我试图为每个学生在单独的文件夹中对一些python提交进行评分.要做到这一点,有一个函数,比如我想运行的f().我知道如果我当前的路径与文件所在的路径相同,我可以这样做
import filename
filename.f()
Run Code Online (Sandbox Code Playgroud)
但是,还有更好的方法吗?例如,假设目录结构如下:
main.py
student/run_this.py
Run Code Online (Sandbox Code Playgroud)
我知道如果学生文件夹中有"__init__.py"文件,我可以输入
import student.run_this
Run Code Online (Sandbox Code Playgroud)
但是,没有该文件,它不起作用.
我发现的一些类似问题
但这些都没有给出特别令人满意的答案.
我希望通过让每个子类在父类保存的列表中注册自己来创建给定类的所有子类的列表,即类似这样的事情:
class Monster(object):
monsters = list()
class Lochness(Monster):
Monster.monsters.append(Lochness)
class Yeti(Monster):
Monster.monsters.append(Yeti)
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,因为当我想将它们添加到列表中时尚未创建类.而且,如果它是自动完成的话会更好(比如__subclass__)
我知道__subclass__有这个功能,但我想知道(我自己的启发)你自己如何实现它.
看起来你想创建一些类元类的子类,它创建了一些用Monster注册它的东西?或者完全偏离基础