Python __初始化()缺少1个必需的位置参数:';rec&x27;

Python __初始化()缺少1个必需的位置参数:';rec&x27;,python,Python,我是python新手。我试图调用类的构造函数,但它给了我以下错误: TypeError:init()缺少1个必需的位置参数:“rec” 我对listen()有如下相同的问题。请丢弃rms()和record(),因为它们是其他函数,下面是我的代码: class Recorder: def __init__(rec): rec.p= pyaudio.PyAudio() rec.stream= rec.p.open(format=FORMAT, channel

我是python新手。我试图调用类的构造函数,但它给了我以下错误:

TypeError:init()缺少1个必需的位置参数:“rec”

我对listen()有如下相同的问题。请丢弃
rms()
record()
,因为它们是其他函数,下面是我的代码:

class Recorder:

    def __init__(rec):
        rec.p= pyaudio.PyAudio()
        rec.stream= rec.p.open(format=FORMAT, channels=CHANNELS, rate=RATE,input=True,output=True,frames_per_buffer=chunk)


    # listen to the sound
    def listen(rec):
        print('Listening beginning')
        while True:
            input = rec.stream.read(chunk, execption_on_overflow=False)
            rms_val = rec.rms(input)
            if rms_val > Threshold:
                rec.record()

k = Recorder()
k.listen()

我认为问题在于其他方法,而您的代码并没有显示所有。。。Record还有其他方法,如“Record”和“rms”

def侦听(rec):

打印('侦听开始')

尽管如此:

input=rec.stream.read(chunk,execption\u on\u overflow=False)

rms_val=rec.rms(输入)#如果您的错误发生在这里,我现在怎么办

如果rms_val>阈值:

记录()#还是在这里记录


如果您正在调用此方法中的init()函数,我现在无法执行…

嗯,我无法重现错误。我只关注
\uuuu init\uuuu
方法,因为这是您的关键部分

Test.py

import pyaudio

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"

class Recorder:
    def __init__(rec):
        rec.p = pyaudio.PyAudio()
        rec.stream = rec.p.open(format = FORMAT, channels = CHANNELS, rate = RATE, input = True, output = True, frames_per_buffer = CHUNK)

    # listen to the sound
    def listen(rec):
        print('Listening beginning')

if(__name__ == "__main__"):
    k = Recorder()
    k.listen()

>> python Test.py
>> Listening beginning
和我的设置

Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import pyaudio
>>> print(pyaudio.__version__)
0.2.11
因此,请指定您的版本,并提供一些关于您的问题的附加信息

我假设您使用的构造函数如下

def __init__(self, rec):
   ...
但是您不会将任何参数传递给
rec
。这可以解释您的错误:

Traceback (most recent call last):
  File ".../Test.py", line 20, in <module>
    k = Recorder()
TypeError: __init__() missing 1 required positional argument: 'rec'
回溯(最近一次呼叫最后一次):
文件“../Test.py”,第20行,在
k=记录器()
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“rec”

尝试将“rec”重命名为“self”。我不确定,但这可能会解决问题。你确定运行的代码实际上就是这个样子吗?(好吧,缩进是错误的,但我指的是
\uuuinit\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。使用名称
self
只是一种惯例,您可以使用任何其他名称。此外,请显示堆栈跟踪。(错误是来自您的构造函数,还是来自
pyaudio.pyaudio
?)@thierrylahuille啊,谢谢,我不确定。问题发生在
\uuuu init\uuuuu
方法中(请参阅错误消息),此方法不使用名为
rms
的方法。另外,您会收到与此错误相关的其他错误消息。错误消息显示类似于参数错误,而不是未知方法错误。我现在无法确定您是否正在调用此方法中的uuu init_uuu()函数…@Daniel a R F。我的完整代码如下: \嗨,这是0.2.11的同一版本。我在没有self的情况下使用def uu init uu(rec)。那么应该没有错误(参见上面的示例)。@Kampi错误仍然存在,并表示:TypeError:u init uu()缺少1个必需的位置参数:“rec”。我正在尝试上传mu的完整代码。请查看您给定的代码。我复制您的代码并定义未知变量。使用完整的代码,我得到了一个错误
TypeError:read()得到了一个意外的关键字参数“execption\u on\u overflow”
,这与您的错误不同。