code: def get(self, *args, **kwargs):
          
          if self:
              if args:
                  index = args[0]
                  if index <= len(self) -1:
                      return self[args[0]]
                  return None
              elif kwargs:
                  key, value = kwargs.popitem()
                  for item in self.items:
                      if getattr(item, key, None) == value:
                          return item
              else:
                  raise ValueError('Missing argument. You must provide an '
                      'arg or kwarg to fetch an element from the collection.')
docs: Get an element from the iterable by an arg or kwarg.
          Args can be a single positional argument that is an index
          value to retrieve. If the specified index is out of range,
          None is returned. Otherwise use kwargs to provide a  key/value.
          The key is expected to be a valid attribute of the iterated class.
          For example, to get an element that has a attribute name of 'foo',
          pass name='foo'.
          
          :raises ValueError: An argument was missing
          :return: the specified item, type is based on what is
              returned by this iterable, may be None