我用静态方法创建了一个类:
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()采用一个位置参数,但给出了两个
我假设意思是‘自我’也被传递给静态方法,但这是一个静态方法,因此我期望自我不会被转移。
我试图修复的目的是将'file_path‘设置为一个可选的参数,没有一个作为默认参数,但我得到了一个
TypeError: parse_detfile()获得参数'file_path‘的多个值
如果有人能告诉我如何用正确的方式写它,我将不胜感激。
编辑:谢谢您的回答,添加更多信息:
报告此问题。
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))发布于 2020-10-04 09:48:51
您的代码实际上是正确的。
我用Python3.8测试了它,没有发现任何问题。
您可以使用该类或该类的实例调用staticmethod。
见此处:https://docs.python.org/3/library/functions.html#staticmethod
即使在早期版本的Python中,它也是这样工作的,我一直检查到Python2.7。所以,你为什么会犯这个错误,这是个谜。
也许给你的代码提供更多的上下文?
https://stackoverflow.com/questions/64192960
复制相似问题