[Python-Dev] PEP 3144 review.
Dj Gilcrease
digitalxero at gmail.com
Mon Sep 28 16:42:15 CEST 2009
On Mon, Sep 28, 2009 at 8:04 AM, Daniel Stutzbach
<daniel at stutzbachenterprises.com> wrote:
> On Mon, Sep 28, 2009 at 7:24 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
>>
>> I should note that I've softened my position slightly from what I posted
>> yesterday. I could live with the following compromise:
>>
>> >>> x = IPv4Network('192.168.1.1/24')
>> >>> y = IPv4Network('192.168.1.0/24')
>> >>> x == y # Equality is the part I really want to see changed
>> True
>> >>> x.ip
>> IPv4Address('192.168.1.1')
>> >>> y.ip
>> IPv4Address('192.168.1.0')
>
> With those semantics, IPv4Network objects with distinct IP addresses (but
> the same network) could no longer be stored in a dictionary or set. IMO, it
> is a little counter-intuitive for objects to compare equal yet have
> different properties. I don't think this is a good compromise.
Thats not true, the patch I submitted
http://codereview.appspot.com/124057 still allows the networks to be
included in a set or as a dict key
>>> net1 = IPNetwork("10.1.2.3/24")
>>> net2 = IPNetwork("10.1.2.0/24")
>>> print hash(net1) == hash(net2)
False
>>> print net1 == net2
True
>>> test = {net1: "something", net2: "something else"}
>>> print test
{IPv4Network('10.1.2.0/24'): 'something else',
IPv4Network('10.1.2.3/24'): 'something'}
>>> test2 = set([net1, net2])
>>> print test2
set([IPv4Network('10.1.2.0/24'), IPv4Network('10.1.2.3/24')])
More information about the Python-Dev
mailing list