__init__.py 572 B

123456789101112131415161718192021
  1. from abc import ABC, abstractmethod
  2. import numpy as np
  3. import six
  4. class BaseMixin(ABC):
  5. @abstractmethod
  6. def get_example(self, i):
  7. s = super(BaseMixin, self)
  8. if hasattr(s, "get_example"):
  9. return s.get_example(i)
  10. def __getitem__(self, index):
  11. if isinstance(index, slice):
  12. current, stop, step = index.indices(len(self))
  13. return [self.get_example(i) for i in
  14. six.moves.range(current, stop, step)]
  15. elif isinstance(index, list) or isinstance(index, np.ndarray):
  16. return [self.get_example(i) for i in index]
  17. else:
  18. return self.get_example(index)