Прикреплённый файл «arbuz.py»

Загрузка

   1 #!/usr/bin/python
   2 # coding: utf-8
   3 '''
   4 Реализовать собственные классы: арбуз и авоська. Реализовать операции
   5 
   6     * арбуз + арбуз = авоська
   7     * авоська + арбуз = авоська
   8     * арбуз + авоська = авоська
   9     * авоська + авоська = авоська
  10     * авоська - арбуз = авоська
  11     * достать арбуз из авоськи (arbuz = avoska.pop())
  12     * просмотр арбузов в авоське (for arbuz in avoska:), без доставания их из авоськи
  13 '''
  14 
  15 class avoska():
  16     ID=0
  17     def __init__(self, *argp):
  18         self.ID=avoska.ID
  19         avoska.ID+=1
  20         if len(argp)==1:
  21             if hasattr(argp[0],"arbuzy"):
  22                 self.arbuzy=argp[0].arbuzy[:]
  23             else:
  24                 self.arbuzy=list(*argp)
  25         else:
  26             self.arbuzy=list(argp)
  27     def __add__(self, arg):
  28         if hasattr(arg,"arbuzy"):
  29             return avoska(self.arbuzy+arg.arbuzy)
  30         else:
  31             return avoska(self.arbuzy+[arg])
  32     def __radd__(self, arg):
  33         return self+arg
  34     def __sub__(self, arg):
  35         if arg in self.arbuzy:
  36             new=self.arbuzy[:]
  37             new.remove(arg)
  38             return avoska(new)
  39         else:
  40             raise ValueError, "No {0} in avoska {1}".format(arg, self)
  41     def pop(self):
  42         return self.arbuzy.pop()
  43     def __iter__(self):
  44         for a in self.arbuzy: yield a
  45     def __repr__(self):
  46         return "Avoska-{0} {1}".format(self.ID,self.arbuzy)
  47 
  48 class arbuz():
  49     ID=0
  50     def __init__(self):
  51         self.ID=arbuz.ID
  52         arbuz.ID+=1
  53     def __add__(self, arg):
  54         return avoska(self, arg)
  55     def __repr__(self):
  56         return "Arbuz-{0}".format(self.ID)
  57 
  58 
  59 a,b,c,d=arbuz(),arbuz(),arbuz(),arbuz()
  60 
  61 S=a+b
  62 T=c+d
  63 print S
  64 print S+a
  65 print T
  66 print T-d
  67 print S+T
  68 print S+T
  69 try:
  70     print S-d
  71 except ValueError as message:
  72     print "{0}-{1} error: {2}".format(S,d,message)
  73 print T.pop(),"/",T
  74 print T.pop(),"/",T

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.