Guest User

Untitled

a guest
Jan 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. class A:
  2.  
  3. ......
  4.  
  5. class B(A):
  6.  
  7. .......
  8.  
  9.  
  10. aA = A()
  11.  
  12. a = A()
  13. a.__class__ = B
  14.  
  15. a = A()
  16. b = B()
  17. b.__dict__ = a.__dict__.copy()
  18. del a
  19. a = b
  20. del b
  21.  
  22. >>> from collections import Counter
  23. >>> d = dict(a=1, b=0)
  24. >>> +Counter(d)
  25. Counter({'a': 1})
  26.  
  27. class A:
  28. def back_print(a: str) -> None:
  29. print(a[::-1])
  30.  
  31. class B(A):
  32. def foo(self,a,b):
  33. print(a+b)
  34.  
  35. b = B()
  36. print(type(b))
  37.  
  38. # строим функцию, которая будет добавлена как метод "а-ля" класс B()
  39.  
  40. def foo(self,a,b):
  41. print(a, '+', b)
  42.  
  43. aA = A()
  44. aA.foo = foo.__get__(aA)
  45. aA.foo(2,3)
  46. print(type(aA))
  47.  
  48. # подменяем тип:
  49. aA.__class__ = type(b)
  50. if type(aA)==type(b):
  51. print(' type(aA)==type(b) ')
  52.  
  53. def bind(instance, method):
  54. def binding_scope_fn(*args, **kwargs):
  55. return method(instance, *args, **kwargs)
  56. return binding_scope_fn
  57.  
  58. bA = A()
  59. bA.foo = bind(bA, foo)
  60.  
  61. aA.foo(2,3)
  62. print(type(bA))
  63.  
  64. import types
  65. cA = A()
  66. cA.foo = types.MethodType(foo, cA)
  67. cA.foo(2,3)
  68. print(type(cA))
  69.  
  70. cA.__class__ = type(b)
  71. cA.foo(2,3)
  72. b.foo(2,3)
  73. if type(cA)==type(b):
  74. print(' type(cA)==type(b) ')
  75.  
  76. cA.pro = 7
  77. print(f'cA.pro: {cA.pro}')
  78.  
  79. cA.pro: 7
Add Comment
Please, Sign In to add comment