[Python-Dev] PEP 3144 review. (original) (raw)
Stephen J. Turnbull stephen at xemacs.org
Wed Sep 30 14:13:38 CEST 2009
- Previous message: [Python-Dev] PEP 3144 review.
- Next message: [Python-Dev] PEP 3144 review.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Mark Dickinson writes:
Please could someone who understands the uses of IPNetwork better than I do explain why the following wouldn't be a significant problem, if eq and hash were modified to disregard the .ip attribute as suggested:
linus = IPv4Network('172.16.200.1/24') snoopy = IPv4Network('172.16.200.3/24') fqdn = {linus: 'linus.peanuts.net', snoopy: 'snoopy.peanuts.net'} fqdn[linus] # expecting 'linus.peanuts.net'
'snoopy.peanuts.net'
Well, for one thing it would be broken anyway if eq and hash paid attention to the .ip attribute, because they also pay attention to the .prefixlen (and I guess .network, redundantly) attribute. Presumably the use in real code would not be fqdn[linus], you already know about linus. Rather, it would be equivalent to say
fqdn[IPv4Network('172.16.200.1/16')] KeyError
where an IP and network parsed out of some packet were used to construct the key. Of course it would work almost all the time, and only break when, say, old-style class was used to infer the prefix length, and was wrong. So, no, I don't think we want to do this.
- Previous message: [Python-Dev] PEP 3144 review.
- Next message: [Python-Dev] PEP 3144 review.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]