繁体   English   中英

Python线程“TypeError:_testmethod()需要2个位置参数,但12个被赋予”

[英]Python Threading “TypeError: _testmethod() takes 2 positional arguments but 12 were given”

我正在为类方法运行一个Thread,并且对必要的语法感到困惑。

运行代码示例:

from threading import Thread

class TestClass:
    def _testmethod(self, argument):
        print(argument)

    def __init__(self, arg):
        self.T = Thread(target=self._testmethod, args=(arg,))
        self.T.start()        

C = TestClass("hello world")

如果我在参数列表中放入冒号,这只能按预期工作:“args =(arg **,**))”

如果我像这样离开结肠:

self.T = Thread(target=self._testmethod, args=(arg))

我得到一个TypeError:

TypeError: _testmethod() takes 2 positional arguments but 12 were given

有人可以告诉我,发生了什么事吗?

args=(arg,)意味着args获得一个元组。 (arg,)的逗号告诉Python解释器,括号用于创建单个元素元组。 如果您将逗号保留,则括号只会包含该值。 根据您传递参数的方式,它可以扩展为多个(不包含在元组中)。

参见文档5.3。 元组和序列 它说:

一个特殊的问题是构造包含0或1项的元组:语法有一些额外的怪癖来适应这些。 空元组由一对空括号构成; 通过使用逗号跟随值来构造具有一个项目的元组(仅在括号中包含单个值是不够的)。 丑陋但有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM