[Python-Dev] PEP 3144 review. (original) (raw)

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