#!/usr/bin/env python # coding: utf-8 # # Наследование # In[1]: class A: def f(self): print('A.f') class B(A): def g(self): print('B.g') class C(B): def f(self): print('C.f') a = A() b = B() c = C() type(a) # In[2]: type(a) is A # In[3]: type(b) is A # In[4]: isinstance(b, B) # In[5]: isinstance(b, A) # In[6]: isinstance(b, object) # In[7]: issubclass(C, A) # In[8]: issubclass(A, C) # In[9]: issubclass(A, object) # In[10]: c.__class__ # In[11]: C.__bases__ # In[12]: A.__subclasses__() # In[13]: a.f() # In[14]: b.f() # In[15]: c.f() # In[16]: C.__mro__ # In[17]: c.lalala() # In[ ]: c.f() # In[ ]: A.f(c) # In[ ]: super(C, c).f() # In[18]: class X: def __init__(self): print('X') class Y(X): def __init__(self): super().__init__() print('Y') y = Y() # # Обработка исключений # In[19]: try: pass except Exception as e: print('except Exception') except ValueError as e: print('except ValueError') except: print('except') else: print('else') finally: print('finally') # In[20]: try: raise Exception except Exception as e: print('except Exception') except ValueError as e: print('except ValueError') except: print('except') else: print('else') finally: print('finally') # In[21]: try: raise ValueError except Exception as e: print('except Exception') except ValueError as e: print('except ValueError') except: print('except') else: print('else') finally: print('finally') # In[22]: try: raise ValueError except ValueError as e: print('except ValueError') except Exception as e: print('except Exception') except: print('except') else: print('else') finally: print('finally') # In[23]: try: raise Exception except ValueError as e: print('except ValueError') except Exception as e: print('except Exception') except: print('except') else: print('else') finally: print('finally') # In[24]: try: raise KeyboardInterrupt except ValueError as e: print('except ValueError') except Exception as e: print('except Exception') except: print('except') else: print('else') finally: print('finally') # In[25]: try: raise ValueError except ValueError as e: print('except ValueError') raise except Exception as e: print('except Exception') except: print('except') else: print('else') finally: print('finally') # In[26]: try: raise ValueError except ValueError as e: print('except ValueError') raise RuntimeError from e except Exception as e: print('except Exception') except: print('except') else: print('else') finally: print('finally') # In[27]: import sys import traceback try: raise KeyboardInterrupt except ValueError as e: print('except ValueError') raise RuntimeError from e except Exception as e: print('except Exception') except: t, v, tb = sys.exc_info() print('except') traceback.print_exception(t, v, tb) else: print('else') finally: print('finally') # In[28]: import traceback try: raise KeyboardInterrupt except ValueError as e: print('except ValueError') raise RuntimeError from e except Exception as e: print('except Exception') except: print('except') traceback.print_exc() else: print('else') finally: print('finally') # In[29]: def f1(): f2() def f2(): f3() def f3(): raise ValueError f1() # In[30]: def f1(): try: f2() except ValueError: print('gotcha') print('f1') def f2(): f3() print('f2') def f3(): raise ValueError print('f3') f1() # # Стандартные исключения # In[31]: raise int # In[32]: import sys sys.exit() # In[33]: import math math.exp(1000) # In[34]: 1 / 0 # In[35]: assert(False) # In[36]: "asdf".asdf # In[37]: import asdf # In[38]: a = [1, 2, 3] a[5] # In[39]: d = {} d['a'] # In[40]: a = list(range(10 ** 15)) # In[41]: def f(): if False: a = 1 print(a) f() # In[42]: a + # In[43]: def f(): print(1) print(2) # In[44]: def f(): print(1) print(2) # In[45]: "s" + 1 # In[46]: import math math.acos(2) # # Свое исключение # In[47]: class MyError(Exception): def __init__(self, message): self.message = message def __str__(self): return self.message raise MyError("Error message")