Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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 我的类可以在代码开始时调用,但不能在测试循环时调用_Python_Class_Callable - Fatal编程技术网

Python 我的类可以在代码开始时调用,但不能在测试循环时调用

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

我有两个文件: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 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
序列上的构造,其工作原理如下:

  • 为下一个(第一个、第二个、最后一个)元素请求序列。内部指针跟踪当前迭代中的元素
  • 元素被分配给“in”左侧的名称
  • 转到1
  • 循环完成后,
    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
    序列上的构造,其工作原理如下:

  • 为下一个(第一个、第二个、最后一个)元素请求序列。内部指针跟踪当前迭代中的元素
  • 元素被分配给“in”左侧的名称
  • 转到1
  • 循环完成后,
    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对象的内容。。。我不想只是粘贴代码,然后说“让我们去找出错的家伙”。。。这有点“简单”,就是这样!我刚看到你发这篇文章时的错误。。。谢谢你,罗格尔斯基!就这样!我刚看到你发这篇文章时的错误。。。谢谢你,罗格尔斯基!