This is just as per the documentation :
There is a name in the stream. The name can be passed to the constructor and read or changed using the name attribute.
and
class threading.Thread(group=None, target=None, name=None, args=(), kwargs={})
So, you are trying to set an attribute, which probably should be set in a certain way, through the class constructor. In fact, if you check the source code of the Thread class <:
@property def name(self): assert self._initialized, "Thread.__init__() not called" return self._name @name.setter def name(self, name): assert self._initialized, "Thread.__init__() not called" self._name = str(name)
All you need to change is call Thread.__init__(name=name) little earlier:
class myThread(threading.Thread): def __init__(self, threadID, name, counter): threading.Thread.__init__(self, name=name) self.threadID = threadID self.counter = counter
source share