2015-12-30 184 views
4

我正在嘗試使用python的「新」is_global方法來確定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。所以你可以使用它,直到bug被修復爲止 – rfkortekaas

+0

我看了一下'ipaddress.py'模塊,它就是'@ property'函數。爲什麼在創建類的實例並嘗試檢索它時看不到它? – wrkyle

回答

3

我看了一個錯誤報告here並去檢查ipaddress.py模塊。雖然存在is_global屬性,但它顯然未實現,並且從2014年春季起,缺陷報告仍然未解決,無法解決,所以我不會屏住呼吸。如有必要,您可以與原始錯誤報告中的某個人聯繫並獲取狀態更新。

更新:根據用戶@galgalesh,在撰寫此問題時,is_global屬性未實現。 That bug已於2016-06-11在Python 3.5中解決。

屬性is_global自Python 3.5+開始實施。