TypeError:必须使用 Vars 实例作为第一个参数调用未绑定的方法 SendVars()(改为获取 bool 实例)
Posted
技术标签:
【中文标题】TypeError:必须使用 Vars 实例作为第一个参数调用未绑定的方法 SendVars()(改为获取 bool 实例)【英文标题】:TypeError: unbound method SendVars() must be called with Vars instance as first argument (got bool instance instead) 【发布时间】: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)
【问题讨论】:
【参考方案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 似乎工作正常。以上是关于TypeError:必须使用 Vars 实例作为第一个参数调用未绑定的方法 SendVars()(改为获取 bool 实例)的主要内容,如果未能解决你的问题,请参考以下文章
Scapy --TypeError: unbound 方法 copy() 必须以 UDP 实例作为第一个参数调用
必须使用 fibo_ 实例作为第一个参数调用未绑定的方法 f()(改为获取 classobj 实例)
TypeError: Layer input_spec 必须是 InputSpec 的一个实例。得到:InputSpec(shape=(None, 128, 768), ndim=3)
如何修复“TypeError:添加的图层必须是类图层的实例。”在 Python 中
TypeError:无效的解构不可迭代实例的尝试。为了可迭代,非数组对象必须有一个 [Symbol.iterator]()