2015-12-30 3 views
4

Я пытаюсь использовать «новый» is_global метод python для определения того, какой IP-адрес выделен для общедоступных сетей (https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Address.is_global). Однако это не работает:Python3 проверить, является ли ip-адрес глобальным

>>> import ipaddress 
>>> ip = ipaddress.IPv4Address('192.0.2.1') 
>>> ip.is_private 
True 
>>> ip.is_reserved 
False 
>>> ip.is_global 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'IPv4Address' object has no attribute 'is_global' 
>>> 

Как показано выше, другие методы, такие как is_private, работают нормально. Я использую python 3.5.1.

Любые идеи?

+0

Хм. Я могу подтвердить, что все другие атрибуты, перечисленные в [docs] (https://docs.python.org/3/library/ipaddress.html), существуют и могут быть восстановлены за исключением 'ip.is_global'. Возможные плохие документы или ошибка? http://www.gossamer-threads.com/lists/python/bugs/1135780 – wrkyle

+0

Вы правы. Реализация отсутствует. В основном это НЕ из is_private. Таким образом, вы можете использовать это, если вам это нужно, пока ошибка не будет исправлена. – rfkortekaas

+0

Я посмотрел в модуле 'ipaddress.py', и он существует как функция' @ property'. Почему он не видит это при создании экземпляра класса и пытается его получить? – wrkyle

ответ

3

Я просмотрел сообщение об ошибке here и отправился проверять модуль ipaddress.py. Хотя существует атрибут is_global, он явно не реализован, и отчет об ошибке остается открытым и нерешенным с весны 2014 года, поэтому я не задерживаю дыхание. При необходимости вы можете связаться с кем-то из исходного отчета об ошибке и получить обновление статуса.

UPDATE: По словам пользователя @galgalesh, на момент написания этого вопроса атрибут is_global не был реализован. That bug был решен в Python 3.5 по 2016-06-11.

Атрибут is_global реализован с языка Python 3.5+.

Смежные вопросы