Как обобщить классы-детей? 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
Надеюсь, я более менее понятно объяснил