Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
pop methods
#3
If you change the behavior of pop, you'll break all existing code.
You can inherit from UserList a make your own special type.
The point is, that a dict has key-values, where the pop method must access explicit a key.
The pop of sequences is different. It takes the last value from the list, if no argument is supplied.
Otherwise, it will return the element with the given index.

from collections import UserList


class DefaultPop(UserList):
    def pop(self, index=-1, default=None):
        try:
            return super().pop(index)
        except IndexError:
            return default


my_list = DefaultPop([1,2,3])


while True:
    value = my_list.pop(default=42)
    print(value)
    if value == 42:
        break
In collections, you've UserDict, UserList and UserString for inheritance.
Don't try this with dict, list and str. Often this won't work as expected.
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply


Messages In This Thread
pop methods - by Skaperen - Nov-19-2020, 06:10 AM
RE: pop methods - by Gribouillis - Nov-19-2020, 09:22 AM
RE: pop methods - by Skaperen - Nov-20-2020, 12:09 AM
RE: pop methods - by DeaD_EyE - Nov-19-2020, 09:58 AM
RE: pop methods - by Skaperen - Nov-20-2020, 12:13 AM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020