Python 类和其他参数作为方法的参数,其中方法定义为接受参数
我有下面的代码Python 类和其他参数作为方法的参数,其中方法定义为接受参数,python,class,parameters,Python,Class,Parameters,我有下面的代码 from dejavu import Dejavu from dejavu.recognize import FileRecognizer, MicrophoneRecognizer djv = Dejavu(config) 识别文件中的音频 下面是来自dejavu/recognize.py的 我不理解如何识别类Filereognizer以及识别器定义为的文件名 def识别(自我,文件名): 并且仅将文件名作为参数。有人能解释一下它是如何工作的吗?它实际上是做什么的 感谢
from dejavu import Dejavu
from dejavu.recognize import FileRecognizer, MicrophoneRecognizer
djv = Dejavu(config)
识别文件中的音频
下面是来自dejavu/recognize.py的
我不理解如何识别类Filereognizer以及识别器定义为的文件名
def识别(自我,文件名):
并且仅将文件名作为参数。有人能解释一下它是如何工作的吗?它实际上是做什么的
感谢@daniel,这是我的后续问题
def recognize(self, recognizer, *options, **kwoptions):
r = recognizer(self)
return r.recognize(*options, **kwoptions)
这是Djavu类下的识别器,我认为行“r=recognizer(self)”中的“self”是使识别器(在Dejavu类下)可以接收FileRecognizer类作为参数的原因,对吗
这是dejavu(音频指纹软件)github提供的,链接如下:
djv
是DejaVu的一个实例,而不是识别器,因此您调用的是该类的识别方法,而不是您显示的方法。@DanielRoseman谢谢djv
是DejaVu的一个实例,而不是识别器,因此您调用的是该类的识别方法,而不是您显示的方法。@DanielRoseman谢谢!
class BaseRecognizer(object):
def __init__(self, dejavu):
self.dejavu = dejavu
self.Fs = fingerprint.DEFAULT_FS
def _recognize(self, *data):
matches = []
for d in data:
matches.extend(self.dejavu.find_matches(d, Fs=self.Fs))
return self.dejavu.align_matches(matches)
def recognize(self):
pass # base class does nothing
class FileRecognizer(BaseRecognizer):
def __init__(self, dejavu):
super(FileRecognizer, self).__init__(dejavu)
def recognize_file(self, filename):
frames, self.Fs, file_hash = decoder.read(filename, self.dejavu.limit)
t = time.time()
match = self._recognize(*frames)
t = time.time() - t
if match:
match['match_time'] = t
return match
def recognize(self, filename):
return self.recognize_file(filename)
def recognize(self, recognizer, *options, **kwoptions):
r = recognizer(self)
return r.recognize(*options, **kwoptions)