TypeError:f2()接受1个位置参数,但给出了2个

时间:2018-11-15 05:26:35

标签: python

我的代码

class MyClass:
    i =123

    def f2(a):
        global b
        print (a)
        print (b)
        b = 9

x = MyClass()
x.f2(1)

它无法正常工作

TypeError: f2() takes 1 positional argument but 2 were given

为什么?如何检查函数和位置参数? 如果我改变

x.f2()
<__main__.MyClass object at 0x7fb3f028fbe0>
9

在这种情况下,我无法通过。

3 个答案:

答案 0 :(得分:2)

class MyClass:
    i =123

    def f2(self,a):
        print (a)

x = MyClass()
x.f2(1)

输出

1

答案 1 :(得分:2)

class MyClass:
    i =123
    def f2(self,a):
        global b
        print (a)
        print (b)
        b = 9

这样写,就可以了

答案 2 :(得分:2)

在类内部创建函数的'OOP'原因之一是继承构造函数。

您已经创建了类'MyClass',函数f2()是其中的函数之一。

要传达该函数属于/属于类的一部分,您必须在函数中传递默认参数“ self”,否则解释器无法识别该参数。

出现错误: 您将1传递给该函数,但是默认情况下,所有类函数都会传递一个“ self”。可能有两种解决方案,

  1. 要么通过装饰器将函数设为静态

    UPDATE d_mat.mat_data SET dloc='Australia' where d_id=1;
    

    *这表示该函数仅在类内部,但 不属于它。就在那里。

  2. 在函数中传递一个“自我”。

    @static
    
    def f2(a):
    
        pass
    

希望有帮助。