Source code for kyu_6.default_list.default_list

"""
Solution for -> DefaultList.

Created by Egor Kostan.
GitHub: https://github.com/ikostan
"""


[docs] class DefaultList: """A class called DefaultList.""" def __init__(self, lst: list, default_value: str): """ Create a new DefaultList instance. :param lst: :param default_value: """ # The class will have two parameters to be given: # a list, and a default value. self.__lst: list = lst self.__default_value: str = default_value def __getitem__(self, i: int): """ Get item. The default value will be returned any time an index of the list is called in the code that would normally raise an error: (i.e. i > len(list) - 1 or i < -len(list)). :param i: :return: """ if i >= len(self.__lst) or i < -len(self.__lst): return self.__default_value return self.__lst[i]
[docs] def extend(self, items: list) -> None: """ Support the regular list functions: extend. :param items: iterable :return: """ self.__lst.extend(items)
[docs] def append(self, item) -> None: """ Support the regular list functions: append. :param item: :return: """ self.__lst.append(item)
[docs] def pop(self, index=None): """ Support the regular list functions: pop. :param index: :return: """ # Return default value when list is empty or None if not self.__lst: return self.__default_value # Return default value when no index is 0 and list is not empty if index == 0 and self.__lst: return self.__lst.pop(index) # Return default value when no index + list is not empty if not index and self.__lst: return self.__lst.pop(-1) return self.__lst.pop(index)
[docs] def remove(self, item) -> None: """ Support the regular list functions: remove. :param item: :return: """ self.__lst.remove(item)
[docs] def insert(self, index: int, item) -> None: """ Support the regular list functions: insert. :param index: :param item: :return: """ self.__lst.insert(index, item)
def __repr__(self) -> str: """ Provide a readable, human-friendly string representation of the object. :return: """ return f"lst: {self.__lst}, default: {self.__default_value}"