2017-07-05 67 views
0

所以我試圖創建一個圖形框架(它被設置爲類)之間共享信息並運行到此錯誤,儘管經過了許多小時的谷歌搜索和嘗試不同的事情,但沒有解決好運。我只是試圖創建一個可以寫入其他類並從其他類讀取的庫。我創建了這個測試代碼只是爲了調試問題,所以如果你想看到我的主代碼讓我知道,謝謝。TypeError:未綁定的方法SendVars()必須使用Vars實例作爲第一個參數調用(取而代之的是bool實例)

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) 

回答

2

看起來你需要實例你瓦爾類,然後才能使用它:

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 = {} 
+1

你是我的英雄受詛咒的!這一直困擾我很多,我知道這是一個愚蠢的簡單,我有全球定義,但我不知道怎麼粘貼到問題大聲笑。再次謝謝你!!! – Jake

+0

沒問題!順便說一下,我會避免命名任何變量'vars',因爲這在Python中有特殊含義https://docs.python.org/2.7/library/functions.html#vars爲了方便,我在回答中做了它。想想我現在會改變它。 – perfect5th

+0

是的,當我把它放進Eclipse時,Eclipse對我大叫,所以我把它改成了var,它似乎工作正常。 – Jake

相關問題