Mercurial > hg > config
annotate python/fireonce.py @ 209:e39d514d0eff
wtf, pt2
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Mon, 13 Feb 2012 16:24:40 -0800 (2012-02-14) |
| parents | 8006938c33ac |
| children |
| rev | line source |
|---|---|
|
164
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
1 class fireonce(object): |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
2 def __init__(self, func): |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
3 self.func = func |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
4 def __call__(self, *args, **kwargs): |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
5 if not self.func: |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
6 return None |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
7 retval = self.func(*args, **kwargs) |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
8 self.func = None |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
9 |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
10 @fireonce |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
11 def foo(x): |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
12 print x |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
13 |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
14 foo('bar') |
|
8006938c33ac
add fireonce decorator example
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
15 foo('fleem') # not printed |
