【问题标题】:TypeError: unbound method SendVars() must be called with Vars instance as first argument (got bool instance instead)TypeError:必须使用 Vars 实例作为第一个参数调用未绑定的方法 SendVars()(改为获取 bool 实例)
【发布时间】:2017-12-09 18:46:54
【问题描述】:

所以我正在尝试创建一个在框架(设置为类)之间共享信息的 GUI,并遇到了这个错误,尽管经过数小时的谷歌搜索和尝试不同的事情,但没有运气解决。我只是想创建一个可以写入和读取其他类的库。我创建此测试代码只是为了调试问题,如果您想查看我的主要代码,请告诉我,谢谢。

class Vars():

    global vari 

    vari = dict(Sifo = False, Username = "", Password = "", Event = "", Time = "")


    def GetVars(self, var):

        print "1"
        return vari.pop(var)

    def SendVars(self, var, val):

        print"2"
        vari[str(var)] = val

class maintest():

    def test(self):

        yes = raw_input("Yes: ")

        if yes == "1":
            yes = True
        else:
            yes = False

        self.result(yes)

    def result(self, reslt):

        if reslt == True:
            yes = True
        else:
            yes = False 

        Vars.SendVars('yes', yes)

a = maintest()
a.test()

print Vars.GetVars('yes')

输出:

Yes: 1
Traceback (most recent call last):
  File "/Users/jacobsifodaskalakis/Documents/LiClipse 
Workspace/Test/Test4.py", line 43, in <module>
    a.test()
  File "/Users/jacobsifodaskalakis/Documents/LiClipse 
Workspace/Test/Test4.py", line 31, in test
    self.result(yes)
  File "/Users/jacobsifodaskalakis/Documents/LiClipse 
Workspace/Test/Test4.py", line 40, in result
    Vars.SendVars('yes', yes)
TypeError: unbound method SendVars() must be called with Vars 
instance as first argument (got str instance instead)

【问题讨论】:

    标签: python-2.7 dictionary tkinter typeerror


    【解决方案1】:

    看起来您需要先实例化 Vars 类才能使用它:

    def result(self, reslt):
    
        if reslt == True:
            yes = True
        else:
            yes = False 
    
        vars_instance = Vars()
    
        vars_instance.SendVars('yes', yes)
    

    看看这个问题:How to instantiate a class in python

    您还需要在脚本末尾附近实例化它:

    vars_instance = Vars()
    
    print vars_instance.GetVars('yes')
    

    最后,你忘记定义你的global vari

    global vari
    vari = {}
    

    【讨论】:

    • 你是我该死的英雄!这一直困扰着我,我知道这是一件非常简单的事情,我定义了全局,但不知何故我没有将它粘贴到问题中,哈哈。再次感谢您!!!
    • 没问题!顺便说一句,我会避免命名任何变量 vars,因为这在 Python docs.python.org/2.7/library/functions.html#vars 中具有特殊含义,为了方便起见,我在回答中这样做了。我想我现在就改变它。
    • 是的,当我把它放进去时 Eclipse 对我大喊大叫,所以我把它改成了 var 似乎工作正常。
    猜你喜欢
    • 2015-12-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2018-05-10
    • 2017-04-03
    相关资源
    最近更新 更多