【发布时间】:2020-10-04 09:23:51
【问题描述】:
我用静态方法创建了一个类:
class DetfileDetector(Detector):
def __init__(self, file_path, **kwargs):
super().__init__(**kwargs)
self.detections = self.parse_detfile(file_path)
@staticmethod
def parse_detfile(file_path):
#do somthing with file_path
当我在没有实例化类的情况下调用 parse_defile 时,我得到了预期的结果
DetfileDetector.parse_detfile('foo.txt')
但是,当我从 init() 函数调用它时,我得到了错误:
TypeError: parse_detfile() 需要 1 个位置参数,但 2 个是 给定
我假设意思是'self'也传递给了staticmethod,但这是一个staticmethod,因此我希望self不会被传递。
我的修复尝试是将“file_path”设置为可选参数,默认为 None,但我得到了一个 TypeEroor
TypeError: parse_detfile() 为参数 'file_path' 获得了多个值
如果有人能告诉我如何以正确的方式编写它,我将不胜感激。
编辑:感谢您的回答,添加更多信息:
- 我现在看到,当我从 VScode(版本 1.50.0-insider)的“python 交互式 shell”运行它时它会失败,但是从命令行运行它或没有交互式 shell 时它会通过。我会将此问题报告给 VScode 开发人员。
- 我使用的是 python 3.7.7
Edit2:Detector类的内容
class Detector:
def __init__(self, **kwargs):
self.every = kwargs.pop('every', 1)
self.min_confidence = kwargs.pop('min_confidence', .8)
self.min_wh = kwargs.pop('min_wh', 5)
self.min_ar = kwargs.pop('min_ar', .1)
self.sensor_noise_cov = np.square(np.diag(kwargs.pop('sensor_noise', [10, 10, 1, 10])))
self.classes = object_classes(kwargs.pop('cars_only', True))
【问题讨论】:
-
我无法重现您的错误。它的工作原理如下面我的回答所示。
-
可以分享
Detector类的内容吗? -
@PraysonW.Daniel 我用
Detector编辑了这个问题
标签: python visual-studio-code static-methods