类型错误:函数缺少4个必需的位置参数

2024-09-23 00:27:49 发布

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

我遇到了在类中调用函数的问题。代码片段是:

    class CharacterGenerator(GridLayout):

        def printcharacter(self,my_sb,my_cr,my_scm,my_scb):
            printable_stats = print_stats(my_sb)
            printable_rolls = print_rolls(my_cr)
            printable_scm = print_scm(my_scm)
            printable_scb = print_scb(my_scb)

    #       self.clear_widgets()
            layout=BoxLayout(orientation='vertical')
            stat_box=(Label(text_size=(300, None),
                    text='Stats\n' + str(printable_stats)))
            rolls_box=(Label(text_size=(300, None),
                    text='Rolls\n' + str(printable_rolls)))
            scm_box=(Label(text_size=(300, None),
                    text='SCM\n' + str(printable_scm)))
            scb_box=(Label(text_size=(300, None),
                    text='SCB\n' + str(printable_scb)))

            layout.add_widget(stat_box)
            layout.add_widget(rolls_box)
            layout.add_widget(scm_box)
            layout.add_widget(scb_box)
            wayout = Button(text='Way Out')
            layout.add_widget(wayout)

        def human(self,a,b):
            if b==True: 
                self.Status="human"
                race=self.Status
                statblock = human()
                characteristic_rolls = rolls(statblock)
                skill_category_modifiers = scm(statblock)
                skill_category_bonuses = scb(statblock)
                CharacterGenerator.printcharacter         (self,     statblock, characteristic_rolls, skill_category_modifiers, skill_category_bonuses)

It错误:

^{pr2}$

据我所知,我正在向printcharacter函数发送正确的参数。同一个函数和调用在单独的python模块中使用printcharacter。在

我尝试了调用参数的所有组合,从列表中添加或删除了一些。没有CharacterGenerator.printcharacter调用,我得到的消息就是CharacterGenerator has no object printcharacter,我又回到原点了。在

有人能看出我哪里出错了吗?在


Tags: textselfboxaddmyscmwidgetprint
2条回答

使用self调用函数,在代码CharacterGenerator.printcharacter(self, ...中,您没有将self作为第一个参数传递,所以正确的printcharacter调用假定为:

self.printcharacter(statblock, characteristic_rolls, skill_category_modifiers, skill_category_bonuses)

您可以在What is the purpose of self?上阅读有关self的更多信息。在

简而言之:如果您在没有staticmethodstaticclass修饰符的类定义中定义了方法,那么它将接受类实例方法作为第一个参数被调用(按照惯例,第一个参数称为self),则不应直接传递该参数,因为它将在调用实例方法时自动传递。在

我注意到printcharacter方法不能与self一起操作,因此可以将其定义为staticmethod:

^{pr2}$

下一个方法是:

^{3}$

你的错误似乎在你特征发生器.kv在36号线。在

你把这个函数称为“on_press:根.printcharacter()”没有参数。在

所以用参数调用函数。在

改变这条线

def printcharacter(self,my_sb,my_cr,my_scm,my_scb):

def printcharacter(self,my_sb,my_cr,my_scm,my_scb,*args):

相关问题 更多 >