类和其他参数作为方法的参数,其中方法定义为参数

时间:2016-03-10 10:27:53

标签: python class parameters

我的代码如下

from dejavu import Dejavu

from dejavu.recognize import FileRecognizer, MicrophoneRecognizer

djv = Dejavu(config)

识别文件中的音频

song = djv.recognize(FileRecognizer, "mp3/Sean-Fournier--Falling-For-You.mp3")
下面的

来自dejavu / recogn.py

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)

我不知道如何识别需要类Filereognizer以及识别器定义为

的文件名

def识别(self,filename):

并仅将filename作为参数。有谁能解释这项工作是如何工作的以及它实际上做了什

感谢@daniel这是我的后续问题

def recognize(self, recognizer, *options, **kwoptions):
    r = recognizer(self)
    return r.recognize(*options, **kwoptions)

这是Djavu课程下的识别器,我在思考" self"来自line" r =识别器(self)"是什么让识别器(在Dejavu类下)可以接收FileRecognizer类作为参数吧?

这是来自dejavu(audiofingerprint软件)github,链接如下: https://github.com/worldveil/dejavu

0 个答案:

没有答案