【问题标题】:TypeError: init () takes exactly 1 argument (2 given)TypeError: init () 只需要 1 个参数(给定 2 个)
【发布时间】:2019-07-26 14:13:38
【问题描述】:

如果有人知道如何解决此错误,我将不胜感激。运行以下代码时出现此错误:

!/usr/bin/env python2
# -*- coding: utf-8 -*-
##################################################
# GNU Radio Python Flow Graph
# Title: Top Block 22
# Generated: Tue Jul 23 15:54:16 2019
##################################################




from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import eng_notation
from gnuradio import gr
from gnuradio.eng_option import eng_option
from gnuradio.filter import firdes
from optparse import OptionParser
from flask import Flask, render_template, jsonify, request, redirect, url_for
from random import randint


class top_block_22(gr.top_block):

    def __init__(self):
        gr.top_block.__init__(self, "Top Block 22")

        ##################################################
        # Variables
        ##################################################
        self.samp_rate = samp_rate = 32000

        ##################################################
        # Blocks
        ##################################################
        self.blocks_add_xx = blocks.add_vff(1)
        self.audio_sink = audio.sink(32000, '', True)
        self.analog_sig_source_x_1 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 440, 0.4, 0)
        self.analog_sig_source_x_0 = analog.sig_source_f(samp_rate, analog.GR_COS_WAVE, 350, 0.4, 0)
        self.analog_noise_source_x_0 = analog.noise_source_f(analog.GR_GAUSSIAN, 0.005, -42)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_noise_source_x_0, 0), (self.blocks_add_xx, 2))
        self.connect((self.analog_sig_source_x_0, 0), (self.blocks_add_xx, 0))
        self.connect((self.analog_sig_source_x_1, 0), (self.blocks_add_xx, 1))
        self.connect((self.blocks_add_xx, 0), (self.audio_sink, 0))

app = Flask(__name__)
@app.route('/')
def hex_color():
        return render_template("index.html")
@app.route('/valueofslider')
def slide():
    slide_val = request.args.get('slide_val')
    return top_block_22(slide_val)     


def main(top_block_cls=top_block_22, options=None):

    tb = top_block_cls()
    tb.start()

    try:
        raw_input('Press Enter to quit: ')
    except EOFError:
        pass
    tb.stop()
    tb.wait()

    samp_rate = int(slide_val) + 100
    print(samp_rate)
    return(slide_val) # Still need to return or get TypeError 

if __name__ == '__main__':
    app.run(debug=True)

错误日志:

fit-pc@fitpc-fitlet2:~$ python /home/fit-pc/my_flask_app/virtualenv/Slider/top_block_22.py
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 269-962-008
127.0.0.1 - - [26/Jul/2019 10:05:46] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [26/Jul/2019 10:05:48] "GET /valueofslider?slide_val=6037 HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1997, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/fit-pc/my_flask_app/virtualenv/Slider/top_block_22.py", line 56, in slide
    return top_block_22(slide_val)
TypeError: __init__() takes exactly 1 argument (2 given)

更新:

感谢大家的回复,但不幸的是,到目前为止,没有一个对我有用。这是我的 index.html 代码 DOCTYPE html html head meta harset="utf-8" title jQuery roundSlider - JS Bin

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.css" rel="stylesheet" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/roundSlider/1.3.2/roundslider.min.js"></script>
</head>
<body>
  <!-- Only html needed   -->
  <div id="slider"></div>

  <script>
    var val;
    $("#slider").roundSlider({
      radius: 215,
        min: 0,
        max: 40000,

      change: function () {
        var obj1 = $("#slider").data("roundSlider");
        val = obj1.getValue();
        value: 1
        $.getJSON('/valueofslider', {
          slide_val: val
        });
      }
    });
  </script>
</body>

【问题讨论】:

  • 正如错误所说,您向top_block_22 传递了太多参数。您还没有编写它来接受 slide_val 作为参数;即使你这样做了,你打算用它做什么?
  • 对不起,我不明白那个评论。我告诉你错误发生在哪里。
  • @DanielRoseman,我刚刚注意到我的评论,只是拼写错误。对不起。

标签: python web-applications webserver


【解决方案1】:

您没有在def __init__() 中传递 top_block22 的参数 .您在指示行中传递的参数无法识别。

应该如下所示


def __init__(self, slide_value): 
    self.slide_value = slide_value

【讨论】:

  • 我把它改成了你推荐的,然后给了我这个错误:TypeError: 'top_block_22' object is not callable
  • 因为您的回答消除了我肯定会接受的错误作为答案。我将很快发布另一个生成的错误。谢谢 s3nh。
【解决方案2】:

其实日志说的绰绰有余。错误在这里return top_block_22(slide_val)

这很正常,如果你查看 Class 的定义,它不带任何参数,self 将由 python 提供,但你并没有真正在定义中添加任何参数,后来你创建了一个对象并传递了一个对它的争论,这就是你得到错误的原因

如果你这样调用对象的创建: return top_block_22() # this would throw no Error

【讨论】:

  • 我照你说的做了,但仍然报同样的错误。
  • 但它必须是另一个错误,而不是同一个错误。我没有查看整个代码来查看它会引发什么,但确定它是否与另一个函数或类进行了交互,而不是肯定会导致其他错误
【解决方案3】:

看来,当您调用gr.top_block.__init__(self, "Top Block 22") 时,您不应该将"Top Block 22" 传递给它。

正如错误中提到的,__init__() takes exactly 1 argument (2 given)

【讨论】:

  • 请在您的 -1 旁边附上解释,以便我改进答案。
  • 你的答案是错误的;错误发生在实例化top_block_22 的调用中,而不是在超级调用中
  • @Leogout,实际上,你的答案是正确的,它修复了它,虽然我得到了 TypeError: 'top_block_22' object is not callable。谢谢!
猜你喜欢
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多