Advertisement
Woobinda

Класс MyList, "магические методы"

Jan 18th, 2016
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.38 KB | None | 0 0
  1. """
  2. Класс реализующий список [] и методы списка
  3. """
  4.  
  5. class MyList:
  6.     def __init__(self, start):
  7.         self.my_list = []
  8.         for x in start:
  9.             self.my_list.append(x)
  10.  
  11.     def __add__(self, other):
  12.         return self.my_list + other
  13.  
  14.     def __getitem__(self, index):
  15.         return self.my_list[index]
  16.  
  17.     def __len__(self):
  18.         return len(self.my_list)
  19.  
  20.     def append(self, other):
  21.         self.my_list.append(other)
  22.         return self.my_list
  23.  
  24.     def __getattr__(self, name):
  25.         return getattr(self.my_list, name)
  26.  
  27.     def __mul__(self, value):
  28.         return self.my_list * value
  29.  
  30.     def __repr__(self):
  31.         return repr(self.my_list)
  32.  
  33.  
  34. class MyListSub(MyList):
  35.     """
  36.     Cчетчик количества выполненных операций сложения, полученных путем перезагрузки оператора __add__,   относительно подкласса MyListSub и созданных из него экземпляров.
  37.     """
  38.     calls = 0
  39.    
  40.     def __init__(self, start):
  41.         self.adds = 0
  42.         MyList.__init__(self,start)
  43.  
  44.     def __add__(self, other):
  45.         MyListSub.calls += 1
  46.         self.adds += 1
  47.         return MyList.__add__(self, other)
  48.  
  49.     def stats(self):
  50.         return 'Общее число вызовов операции "+" - %s. Число вызовов операции "+", относительно текущего класса - %s' % (self.calls, self.adds)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement