From 6a973c711823f64d0362d0ba4b25ead4162df357 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Fri, 31 Mar 2000 00:17:46 +0000 Subject: [PATCH] robustify UserList constructor -- will now accept any sequence add test cases for non-UserList class, tuple, & string --- Lib/UserList.py | 13 ++++++++----- Lib/test/test_userlist.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Lib/UserList.py b/Lib/UserList.py index 1680327f572..7bd02986dcc 100644 --- a/Lib/UserList.py +++ b/Lib/UserList.py @@ -1,13 +1,16 @@ """A more or less complete user-defined wrapper around list objects.""" class UserList: - def __init__(self, list=None): + def __init__(self, initlist=None): self.data = [] - if list is not None: - if type(list) == type(self.data): - self.data[:] = list + if initlist is not None: + # XXX should this accept an arbitary sequence? + if type(initlist) == type(self.data): + self.data[:] = initlist + elif isinstance(initlist, UserList): + self.data[:] = initlist.data[:] else: - self.data[:] = list.data[:] + self.data = list(initlist) def __repr__(self): return repr(self.data) def __cmp__(self, other): if isinstance(other, UserList): diff --git a/Lib/test/test_userlist.py b/Lib/test/test_userlist.py index b6846899d42..6c627c01c28 100644 --- a/Lib/test/test_userlist.py +++ b/Lib/test/test_userlist.py @@ -18,6 +18,17 @@ uu0 = UserList(u0) uu1 = UserList(u1) uu2 = UserList(u2) +v = UserList(tuple(u)) +class OtherList: + def __init__(self, initlist): + self.__data = initlist + def __len__(self): + return len(self.__data) + def __getitem__(self, i): + return self.__data[i] +v0 = UserList(OtherList(u0)) +vv = UserList("this is also a sequence") + # Test __repr__ assert str(u0) == str(l0)