Как обобщить классы-детей? Python ООП

Предположим ситуацию:

class Weapon:
    pass

class Rifle(Weapon):
    magic = None

class Pistol(Weapon):
    pass

class MachineGun(Weapon):
    pass

А также предположим ситуацию, что есть функция, возвращающая случайное оружие, оружие которое наследуется от класса Weapon

def GetRandomWeapon() -> Rifle | Pistol | MachineGun:
    pass

Можно ли эту запись сократить (" -> Rifle | Pistol | MachineGun:"), чтобы при добавление новых классов наследников при обращение к полям именно наследников не вызывало ошибок (Нууу, не совсем ошибок, а чтобы в ide красным не горело, и подсказки были ??) т.е.

gun = GetRandomWeapon()
gun.Magic = 4 # Поле, свойственное только Rifle

Надеюсь, я более менее понятно объяснил


Ответы (0 шт):