Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中使用self作为方法参数的问题_Python_Oop_Tkinter - Fatal编程技术网

python中使用self作为方法参数的问题

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

我为这个基本问题道歉,但我觉得我在语法或整体概念上有一些问题。我遇到的问题是,当我调用下面类中的方法时,解释器希望我为我认为不应该发生的自变量输入一个值。我试图做的是创建一个对象来同时容纳几个tkinter小部件,这样我就可以在组中动态地添加或减去它们,而不是一次添加或减去一个。非常感谢您的帮助,谢谢

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中,这是一个完全不同的目标。:-)