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

2024-04-25 06:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python很陌生,我要学习的一件困难的事情是如何正确地使用self。我的理解是我们应该用自己的方法。但是我有一个方法的类,我得到一个类型错误,说我缺少位置参数self。

class example():

    list1 = ['a','b','c','d']
    list2 = ['1','2','3','4']

    def func1(self, list1, list2):

        i = 1
        for item in list1:
            print(list1)
            print(list2[i])
            i +=1

    func1(list1=list1, list2=list2)

#error seen below

<ipython-input-2-d17d317756a0> in <module>()
----> 1 class example():
      2 
      3     list1 = ['a','b','c','d']
      4     list2 = ['1','2','3','4']
      5 
<ipython-input-2-d17d317756a0> in example()
     11             print(list2[i])
     12 
---> 13     func1(list1=list1, list2=list2)

TypeError: func1() missing 1 required positional argument: 'self'

Tags: 方法inself类型inputexampleipython事情
3条回答

如果您试图在类之外调用func1

class Example():
    def func1(self, list1, list2):
        i = 0
        for item in list1:
            print(item)
            print(list2[i])
            i +=1

list1 = ['a','b','c','d']
list2 = ['1','2','3','4']
a = Example()
a.func1(list1,list2)

如果要在类中使用func1功能:

class Example():
    list1 = ['a','b','c','d']
    list2 = ['1','2','3','4']

    def func1(self):
        i = 0
        for item in self.list1:
            print(item)
            print(self.list2[i])
            i +=1

a = Example()
a.func1()

或者,如果列表的长度相同,则func可以是:

def func1(self, list1, list2):
    for i in range(len(list1)):
        print(list1[i])
        print(list2[i])

我不是python专家,但请尝试下面的方法,它可能会帮助您

class example():

    list1 = ['a','b','c','d']
    list2 = ['1','2','3','4']

    def func1(list1, list2):

        i = 1
        for item in list1:
            print(list1)
            print(list2[i])
            i +=1

    func1(list1=list1, list2=list2)

您定义为func1的函数是method。需要在该类的实例上使用。例如

abc = example() # We create the instance

abc.func1() # This is how you call a method.

这里self表示abc

如果要在类中调用它,则需要使用self本身,如果在外部调用,self将替换为实例名。

Class example():
    def func1(self):
        #stuff
    def func2(self):
        self.func1() # This is the usage.

编辑:在这种情况下,可以使用静态方法。

class example():

    def func1():
        pass

    func1()

然而,您应该意识到,这并不比创建一个全局函数好多少。所以我建议你找到一种方法来使用我推荐的第一种方法。

相关问题 更多 >