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

2024-09-26 22:44:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件:主.py以及巴索尔公司在

在巴索尔公司包含类和主.py正在从类Batsol创建一些实例。 所以我会给你看我代码的一个简明版本。。。在

class Batsol:
  def __init__(self, addressCan = None, name = None) :
    self.addressCan = addressCan
    self.name = name
    #other stuff ...

那么我的主.py公司名称:

^{pr2}$

控制台显示:

True
False
Traceback (most recent call last):
File "./main.py", line 135, in <module>
bs2 = Batsol()
TypeError: 'int' object is not callable

回溯的第二部分并没有链接到我在代码中所做的其他事情(线程没有正确终止。。。像这样),在我看来

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

为什么我的对象在我的测试循环中不可调用??? 它让我发疯。。。在


Tags: 代码nameinpyselfislibusr
1条回答
网友
1楼 · 发布于 2024-09-26 22:44:36

您的阴影出现在以下代码片段中:

if len(listener.ring_buffer) == 0 :
    for Batsol in tab_BS :
        try:
            print(tab_BS[Batsol])
        except (IndexError):
            pass
time.sleep(4)

序列上的for-in构造如下:

  1. 序列被要求下一个(第一个,第二个。。。最后)元素。内部指针跟踪当前迭代中的元素。在
  2. 元素被分配给“in”左侧的名称。在
  3. 转到1。在

循环结束后,Batsol不再是您的类,而是tab_BS中的最后一个元素。在

我建议您使用一个更好的IDE,或者使用好的静态代码分析工具(Pylint/Flake8等),因为这种错误很容易被PyCharm(您的代码阴影来自外部范围的名称)。在

相关:How bad is shadowing names defined in outer scopes?

相关问题 更多 >

    热门问题