diff options
| author | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-31 00:17:46 +0000 | 
|---|---|---|
| committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2000-03-31 00:17:46 +0000 | 
| commit | 6a973c711823f64d0362d0ba4b25ead4162df357 (patch) | |
| tree | b1042df5f08c5414f024849c381da0e964f069b8 | |
| parent | 074c3e62d155349a69442f43e81a73883f222ea9 (diff) | |
| download | cpython-git-6a973c711823f64d0362d0ba4b25ead4162df357.tar.gz | |
robustify UserList constructor -- will now accept any sequence
add test cases for non-UserList class, tuple, & string
| -rw-r--r-- | Lib/UserList.py | 13 | ||||
| -rw-r--r-- | Lib/test/test_userlist.py | 11 | 
2 files changed, 19 insertions, 5 deletions
| diff --git a/Lib/UserList.py b/Lib/UserList.py index 1680327f57..7bd02986dc 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 b6846899d4..6c627c01c2 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) | 
