Message339003
Consider:
from collections.abc import *
class DefinitelyNotAList:
def __init__(self, backer):
self.backer = backer
def __getitem__(self, key):
return self.backer[key]
def __len__(self):
return len(self.backer)
def __contains__(self, needle):
return needle in self.backer
def __reversed__(self):
return reversed(self.backer)
def __iter__(self):
return list.__iter__(self.backer)
def index(self, *args, **kwargs): return self.backer.index(*args, **kwargs)
def count(self, *args, **kwargs): return self.backer.count(*args, **kwargs)
dnal = DefinitelyNotAList([2,4,6,8])
for abc in [Collection, Reversible, Sized, Iterable, Container, Sequence]:
print(abc.__name__.ljust(12), isinstance(dnal, abc))
Which prints:
Collection True
Reversible True
Sized True
Iterable True
Container True
Sequence False
I'm not sure whether this is a bug, a docs bug, or just a misunderstanding but my expectation, is that, somehow, I could get isinstance(obj, Sequence) to return *without* explicitly registering it, just as True is returned for the other abcs. |
|
Date |
User |
Action |
Args |
2019-03-28 02:40:42 | jedwards | set | recipients:
+ jedwards |
2019-03-28 02:40:42 | jedwards | set | messageid: <1553740842.38.0.441898568042.issue36455@roundup.psfhosted.org> |
2019-03-28 02:40:42 | jedwards | link | issue36455 messages |
2019-03-28 02:40:42 | jedwards | create | |
|