Advertisement
jminuscula

python callback arg binding

Mar 20th, 2019
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.80 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. from functools import partial
  4.  
  5.  
  6. class Foo:
  7.  
  8.     def callback(self, value):
  9.         print(value)
  10.  
  11.     def wrong(self):
  12.         callbacks = []
  13.         for i in range(3):
  14.             callbacks.append(lambda: self.callback(i))
  15.  
  16.         for c in callbacks:
  17.             c()
  18.  
  19.     def right(self):
  20.         callbacks = []
  21.         for i in range(3):
  22.             callbacks.append(partial(self.callback, i))
  23.  
  24.         for c in callbacks:
  25.             c()
  26.  
  27.     def test(self):
  28.         callbacks = []
  29.         get_fn = lambda i: (lambda: self.callback(i))
  30.         for i in range(3):
  31.             callbacks.append(get_fn(i))
  32.  
  33.         for c in callbacks:
  34.             c()
  35.  
  36.  
  37. if __name__ == '__main__':
  38.     f = Foo()
  39.     f.wrong(); print()
  40.     f.right(); print()
  41.     f.test()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement