class MAC:
def __init__(self):
pass
@overload
@classmethod
def get_mac_address(cls, with_gateway: bool = False) -> str:
...
@overload
@classmethod
def get_mac_address(cls, with_gateway: bool = True) -> tuple[str, str]:
...
@classmethod
def get_mac_address(cls, with_gateway: bool = False) -> str:
default_gateway = netifaces.gateways()["default"][netifaces.AF_INET][1]
mac_addr = netifaces.ifaddresses(default_gateway)[netifaces.AF_LINK][0]['addr']
return mac_addr if not with_gateway else (mac_addr, default_gateway)
Есть функция, описанная выше, хочу описать её так, чтобы если with_gateway=True, то функция вернет typle[str, str], если with_gateway=False, то - str
Почему-то vs code видит, что от разных условий вернется разное:
Но если я ввожу with_gateway=True, то статический анализатор считает, что в переменную запишется str:
Если поменять перегрузки местами, то всегда показывает, что возвращается tuple[str, str]