我在python项目中设置了以下类,
在MicroSim.py中
class MicroSim:
def __init__(self, other_values):
# init stuff here
def _generate_file_name(self, integer_value):
# do some stuff here
def run(self):
# do some more stuff
self._generate_file_name(i)
在ThresholdCollabSim.py
中from MicroSim import MicroSim
class ThresholdCollabSim (MicroSim):
# no __init__() implmented
def _generate_file_name(self, integer_value):
# do stuff here
super(ThresholdCollabSim, self)._generate_file_name(integer_value) # I'm trying to call MicroSim._generate_file_name() here
# run() method is not re-implemented in Derived!
在MicroSimRunner.py
中from ThresholdCollabSim import ThresholdCollabSim
def run_sims(values):
thresholdSim = ThresholdCollabSim(some_values) # I assume since ThresholdCollabSim doesn't have it's own __init__() the MicroSim.__init() will be used here
thresholdSim.run() # again, the MicroSim.run() method should be called here since ThresholdCollabSim.run() doesn't exist
当我运行此代码时,我收到错误消息,
Traceback(最近一次调用最后一次):文件“stdin”,第1行,in 在run_sims中的文件“H:... \ MicroSimRunner.py”,第11行 thresholdSim.run()文件“H:... \ MicroSim.py”,第42行,在运行中 self._generate_file_name(r)文件“H:... \ ThresholdCollabSim.py”,第17行,在_generate_file_name中 super(ThresholdCollabSim,self)._ generate_file_name(curr_run)TypeError:未绑定的方法_generate_file_name()必须是 用MicroSim实例作为第一个参数调用(得到int实例 代替)
我试图在这里搜索这样的问题并找到类似的帖子并尝试了所有解决方案,但这个错误似乎并没有消失。我尝试将有问题的行改为
super(ThresholdCollabSim, self)._generate_file_name(self, curr_run)
但它什么都没改变(同样的错误)。我在Python编程方面相对较新,所以这可能只是一个愚蠢的错误。任何帮助深表感谢。谢谢!
答案 0 :(得分:1)
您忘记了派生self
方法中的_generate_file_name
参数。此外,您需要使用class MicroSim(object)
使MicroSim成为新式类。
答案 1 :(得分:1)