ошибка AssertionError: group argument must be None for now
код
class Knight(Thread):
def __init__(self, name, power):
super().__init__(name)
self.name = str(name)
self.power = int(power)
self.days = 0
self.enemies = 100
def start_war(self):
print(f'{self.name}, на нас напали!')
def finish_war(self):
print(f'{self.name} одержал победу спустя {self.days} дней(дня)!')
def run(self):
self.start_war()
while self.enemies > 0:
print(f'{self.name} сражается {self.days}..., осталось {self.enemies} воинов.')
self.enemies -= self.power
self.days += 1
sleep(1)
self.finish_war()
first_knight = Knight('Sir Lancelot', 10)
second_knight = Knight("Sir Galahad", 20)
first_knight.start()
second_knight.start()
first_knight.join()
second_knight.join()
print('Все битвы закончились!')
выдает ошибку
assert group is None, "group argument must be None for now" ^^^^^^^^^^^^^ AssertionError: group argument must be None for now
подскажите как исправить плиз
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Если открыть блок __init__
в Thread, можно увидеть причину проблемы:
class Thread:
name: str
@property
def ident(self) -> int | None: ...
daemon: bool
def __init__(
self,
group: None = None,
target: Callable[..., object] | None = None,
name: str | None = None,
args: Iterable[Any] = (),
kwargs: Mapping[str, Any] | None = None,
*,
daemon: bool | None = None,
) -> None: ...
Пытаясь записать имя потока в group: None = None
- логично получаем ошибку:
assert group is None, "group argument must be None for now"
Следовательно, надо передать имя потока корректно:
class Knight(Thread):
def __init__(self, name, power):
super().__init__(name=name)
self.power: int = power
self.days = 0
self.enemies = 100
Или ничего не передавать, super().__init__()
.. или super().__init__(None, name)
..
class Knight(Thread):
def __init__(self, name, power):
super().__init__()
self.name: str = name
self.power: int = power
self.days = 0
self.enemies = 100