如何在python3中重载Thread类的uuu init_uuu函数?

如何在python3中重载Thread类的uuu init_uuu函数?,python,multithreading,python-3.x,oop,Python,Multithreading,Python 3.x,Oop,我正在尝试移植到python3。但是我不知道如何在python3中设置线程 Thread类中python2线程的减速 Thread.__init__(self, group=None, target=None, name=None, args=(), kwargs=None, verbose=None) 但是蟒蛇3它: Thread.__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemo


我正在尝试移植到python3。但是我不知道如何在python3中设置
线程

Thread类中python2
线程的减速

Thread.__init__(self, group=None, target=None, name=None, args=(), kwargs=None, verbose=None)
但是蟒蛇3它:

Thread.__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)
注意:python3的结尾是:
args=(),kwargs=None,*,daemon=None)
部分问题是我不明白如何处理函数中的星号
*
。解释它的用途也会有所帮助

只需使用python2就可以引发:
TypeError:\uuuu init\uuuuuu()接受1到6个位置参数,但给出了7个

我应该如何编写python3
线程

更新,示例中的python2调用是:

Thread.__init__(self, group, target, name, args, kwargs, Verbose)
我的逻辑会说这在python3中是如何工作的,但事实并非如此,答案应该包括如何调用它,或者如何构建它的说明,包括kwargs:

Thread.__init__(self, group, target, name, args, kwargs, daemon)

如果需要重载它,只需小心如何构造
super
调用(或对
线程的任何调用.\uuuu init\uuuu
)以明确说明裸
*
后的参数(即以键形式提供):

例如,如果您有一个签名为的
Foo
类:

class Foo:
    def __init__(self, b=30, *, c=40):
        print(b, c)
无论何时调用,都需要提供一个
c=
参数。例如,如果您在
FooChild
类中通过以下方式重载它:

class FooChild(Foo):
    def __init__(self, a, myval_1, my_val2):
        print(a)
        super().__init__(b, c=my_val2)
调用
基类时,需要提供名称
c
。\uuuu init\uuuu

如果您有
*args
**kwargs
,那么在调用子类
\uuuu init\uuu
时,再次需要显式地为
c
提供一个值,即:

class FooBase(Foo):
    def __init__(self, a, *args, **kwargs):
        print(a)
        super().__init__(*args, **kwargs)

可由
FooBase(1,2,c=30)
调用,但与
FooBase(1,2,d=30)
FooBase(1,2,30)
不同。你需要
c
传递给
\uuuu init\uuuu
,这是必需的。

*
强制呼叫方在星号后使用kwargs。我不能做一些涉及卡丁车的事情吗?我提供的示例是这样使用的:`Thread.`init\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;你用什么方式做这件事是无关紧要的,你只需要以某种方式通过它。好了,一切都好了!我还发布了“那太棒了”@GuySoft,投票结果是上等的。移植流行的和复杂的答案是更多的人应该考虑做的事情。