Python 我的类可以在代码开始时调用,但不能在测试循环时调用
我有两个文件:main.py和batsol.py batsol.py包含一个类,main.py正在从该类batsol创建一些实例。 因此,我将向您展示我的代码的简明版本Python 我的类可以在代码开始时调用,但不能在测试循环时调用,python,class,callable,Python,Class,Callable,我有两个文件:main.py和batsol.py batsol.py包含一个类,main.py正在从该类batsol创建一些实例。 因此,我将向您展示我的代码的简明版本 class Batsol: def __init__(self, addressCan = None, name = None) : self.addressCan = addressCan self.name = name #other stuff ... 然后我的main.py: from ba
class Batsol:
def __init__(self, addressCan = None, name = None) :
self.addressCan = addressCan
self.name = name
#other stuff ...
然后我的main.py:
from batsol import Batsol
# other import and code ...
print(callable(Batsol))
bs1 = Batsol()
# code...
if len(listener.ring_buffer) == 0 :
for Batsol in tab_BS :
try:
print(tab_BS[Batsol])
except (IndexError):
pass
# code...
while(True) :
# for and if interlocked
print(callable(Batsol))
bs2 = Batsol()
控制台显示:
True
False
Traceback (most recent call last):
File "./main.py", line 135, in <module>
bs2 = Batsol()
TypeError: 'int' object is not callable
True
假的
回溯(最近一次呼叫最后一次):
文件“/main.py”,第135行,在
bs2=Batsol()
TypeError:“int”对象不可调用
在我看来,回溯的第二部分与我在代码中正在做的其他事情没有关联(线程没有正确终止……类似于这样的事情)
Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
Traceback (most recent call last):
File "/usr/lib/python3.4/threading.py", line 1292, in _shutdown
t = _pickSomeNonDaemonThread()
File "/usr/lib/python3.4/threading.py", line 1300, in _pickSomeNonDaemonThread
if not t.daemon and t.is_alive():
TypeError: 'bool' object is not callable
中忽略的异常:
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3.4/threading.py”,第1292行,在
t=_pickSomeNonDaemonThread()
文件“/usr/lib/python3.4/threading.py”,第1300行,在
如果t.daemon和t.is_未激活():
TypeError:“bool”对象不可调用
为什么我的对象不能在我的测试循环中调用???
它让我疯狂…您的阴影出现在以下代码片段中:
if len(listener.ring_buffer) == 0 :
for Batsol in tab_BS :
try:
print(tab_BS[Batsol])
except (IndexError):
pass
time.sleep(4)
对于in
序列上的构造,其工作原理如下:
Batsol
不再是您的类,而是tab\u BS
中的最后一个元素
我建议使用一个更好的IDE,或者使用好的静态代码分析工具(Pylint/Flake8等),因为这种错误很容易被PyCharm(你的代码从外部范围中隐藏名称)检测到
相关:您的阴影出现在此代码片段中:
if len(listener.ring_buffer) == 0 :
for Batsol in tab_BS :
try:
print(tab_BS[Batsol])
except (IndexError):
pass
time.sleep(4)
对于in
序列上的构造,其工作原理如下:
Batsol
不再是您的类,而是tab\u BS
中的最后一个元素
我建议使用一个更好的IDE,或者使用好的静态代码分析工具(Pylint/Flake8等),因为这种错误很容易被PyCharm(你的代码从外部范围中隐藏名称)检测到
相关:np我理解:你确定在
#code…
或#中的某个地方没有Batsol=something
赋值吗?如果是互锁的
,最有可能的原因是,我们看不到code…
,里面的某个东西给名称Batsol
分配了一个int
对象。你会想“好吧,显然我不会那样做”,但我们不可能知道这一点,而且人们对自己错误代码的看法总是可疑的。我只能建议您将问题简化为一个问题,如果从代码中删除code…
使问题消失,那么这是因为code…
中的某些内容,除非进行心理调试,否则我们无法帮助您,因为我们没有看到错误代码。错误意味着Batsol
在这一点上是一个int
,和INT不可调用。正如Steve所说,您已经将Batsol指定为int,但不是我们可以看到的任何地方。您认为一个包含整个代码的pastbin会有帮助吗?我知道回溯错误不是来源。。。事实上,CTRL+F是我的朋友:我在我的函数/文件/导入的类中到处搜索:找不到修改我的Batsol对象的内容。。。我不想只是粘贴代码,然后说“让我们去找出错的家伙”。。。这有点“简单”。np我理解:你确定在#code…
或#中的某个地方没有Batsol=something
赋值,如果是互锁的
?这是最可能的原因,因为我们看不到code…
,里面的某个东西给名称Batsol
分配了一个int
对象。你会想“好吧,显然我不会那样做”,但我们不可能知道这一点,而且人们对自己错误代码的看法总是可疑的。我只能建议您将问题简化为一个问题,如果从代码中删除code…
使问题消失,那么这是因为code…
中的某些内容,除非进行心理调试,否则我们无法帮助您,因为我们没有看到错误代码。错误意味着Batsol
在这一点上是一个int
,和INT不可调用。正如Steve所说,您已经将Batsol指定为int,但不是我们可以看到的任何地方。您认为一个包含整个代码的pastbin会有帮助吗?我知道回溯错误不是来源。。。事实上,CTRL+F是我的朋友:我在我的函数/文件/导入的类中到处搜索:找不到修改我的Batsol对象的内容。。。我不想只是粘贴代码,然后说“让我们去找出错的家伙”。。。这有点“简单”,就是这样!我刚看到你发这篇文章时的错误。。。谢谢你,罗格尔斯基!就这样!我刚看到你发这篇文章时的错误。。。谢谢你,罗格尔斯基!