我遇到了在类中调用函数的问题。代码片段是:
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
,我又回到原点了。在
有人能看出我哪里出错了吗?在
使用
self
调用函数,在代码CharacterGenerator.printcharacter(self, ...
中,您没有将self作为第一个参数传递,所以正确的printcharacter
调用假定为:您可以在What is the purpose of self?上阅读有关
self
的更多信息。在简而言之:如果您在没有staticmethod或staticclass修饰符的类定义中定义了方法,那么它将接受类实例方法作为第一个参数被调用(按照惯例,第一个参数称为
self
),则不应直接传递该参数,因为它将在调用实例方法时自动传递。在我注意到
^{pr2}$printcharacter
方法不能与self
一起操作,因此可以将其定义为staticmethod:下一个方法是:
^{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):
相关问题 更多 >
编程相关推荐