python中使用self作为方法参数的问题
我为这个基本问题道歉,但我觉得我在语法或整体概念上有一些问题。我遇到的问题是,当我调用下面类中的方法时,解释器希望我为我认为不应该发生的自变量输入一个值。我试图做的是创建一个对象来同时容纳几个tkinter小部件,这样我就可以在组中动态地添加或减去它们,而不是一次添加或减去一个。非常感谢您的帮助,谢谢python中使用self作为方法参数的问题,python,oop,tkinter,Python,Oop,Tkinter,我为这个基本问题道歉,但我觉得我在语法或整体概念上有一些问题。我遇到的问题是,当我调用下面类中的方法时,解释器希望我为我认为不应该发生的自变量输入一个值。我试图做的是创建一个对象来同时容纳几个tkinter小部件,这样我就可以在组中动态地添加或减去它们,而不是一次添加或减去一个。非常感谢您的帮助,谢谢 class User(object): #Input a UI row number and this will generate a corresponding row of widg
class User(object):
#Input a UI row number and this will generate a corresponding row of widgets
def generateLine(self, rowNumber):
self.NameVar = StringVar()
self.ReasonVar = StringVar()
#ExcusedVar
self.Name_Cbox = ec.AutocompleteCombobox(content, textvariable = self.NameVar)
self.Name_Cbox.grid(row = rowNumber, column = 0)
self.Reason_Cbox = ec.AutocompleteCombobox(content, textvariable = self.ReasonVar)
self.Reason_Cbox.grid(row = rowNumber, column = 1)
确保您有一个User
类的实例来调用该方法:
user = User()
user.generateLine(0)
self
仅在方法已绑定到实例时提供
如果直接在类上调用该方法,将出现异常:
>>> class User(object):
... def generateLine(self, row):
... print row
...
>>> User.generateLine(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method generateLine() must be called with User instance as first argument (got int instance instead)
>>> User().generateLine(0)
0
类用户(对象):
... def生成线(自身,行):
... 打印行
...
>>>用户生成线(0)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:必须使用用户实例作为第一个参数调用未绑定的方法generateLine()(改为使用int-instance)
>>>User().generateLine(0)
0
确保有一个用户
类的实例来调用该方法:
user = User()
user.generateLine(0)
self
仅在方法已绑定到实例时提供
如果直接在类上调用该方法,将出现异常:
>>> class User(object):
... def generateLine(self, row):
... print row
...
>>> User.generateLine(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method generateLine() must be called with User instance as first argument (got int instance instead)
>>> User().generateLine(0)
0
类用户(对象):
... def生成线(自身,行):
... 打印行
...
>>>用户生成线(0)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:必须使用用户实例作为第一个参数调用未绑定的方法generateLine()(改为使用int-instance)
>>>User().generateLine(0)
0
当您遇到python问题并产生回溯时,请始终将其包含在问题中。这对我们的帮助远不止猜测您犯了什么样的错误。当您遇到python问题并产生回溯时,请始终将其包含在您的问题中。这对我们的帮助远不止猜测你犯了什么样的错误。很好的例子+1。。。我只想为OP添加一个选项,在设计中考虑在类def中包含
\uuu getitem\uuu=generateLine
。@JonClements:OP的方法不返回任何内容。我认为使用方法作为\uuuu getitem\uuuuu
是个坏主意。好吧,我承认关于\uuuu getitem\uuuuu
的观点-我不知怎的看到了一个return
语句,它不在那里:),但我会试图通过说,generateLine
应该返回生成的行来弥补我自己的不足,和\uuu getitem\uuu
应用于检索生成的行?;)@琼克莱门茨:没有;该方法将元素添加到UI中,这是一个完全不同的目标。:-)好例子+1。。。我只想为OP添加一个选项,在设计中考虑在类def中包含\uuu getitem\uuu=generateLine
。@JonClements:OP的方法不返回任何内容。我认为使用方法作为\uuuu getitem\uuuuu
是个坏主意。好吧,我承认关于\uuuu getitem\uuuuu
的观点-我不知怎的看到了一个return
语句,它不在那里:),但我会试图通过说,generateLine
应该返回生成的行来弥补我自己的不足,和\uuu getitem\uuu
应用于检索生成的行?;)@琼克莱门茨:没有;该方法将元素添加到UI中,这是一个完全不同的目标。:-)