[Python-Dev] PEP 3144 review.
"Martin v. Löwis"
martin at v.loewis.de
Mon Sep 28 21:52:53 CEST 2009
> The fundamental divide here is between two behaviors.
>
> ipaddr:
>
> >>> x = IPv4Network('192.168.1.1/24')
> >>> y = IPv4Network('192.168.1.0/24')
> >>> x == y
> False
> >>> x.ip
> IPv4Address('192.168.1.1')
>
> desired:
>
> >>> x = IPv4Network('192.168.1.1/24')
> >>> y = IPv4Network('192.168.1.0/24')
> >>> x == y
> True
> >>> x.ip
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> AttributeError: 'IPv4Network' object has no attribute 'ip'
I can understand the debate around the comparison.
I cannot understand the complaint that networks where the base
address is not null-terminated should be banned, or useless
(which was the original concern that I responded to).
> Everything else is pretty much bikeshedding and can be dealt with. This
> is fundamental and Peter has indicated he will not change it.
I can see why either behavior is desirable (i.e. comparison should
either use the specified address, or the network address); following
the Python Zen, we should refuse the temptation to guess.
Unfortunately, that would mean that we should provide two comparison
operations, and have neither available as == (unless one is more clearly
right than the other, which I'm skeptical about).
Regards,
Martin
More information about the Python-Dev
mailing list