-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.py
More file actions
79 lines (52 loc) · 1.44 KB
/
test.py
File metadata and controls
79 lines (52 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# /bin/python
class iNoteContext(dict):
def __init__(self):
pass
def __enter__(self):
for func in iNoteContext.__funcs__:
func(ctx=self)
return self
def __exit__(self, exc_type, exc_value, traceback):
pass
def __setattr__(self, key, value):
self[key] = value
def __getattr__(self, item):
return self[item]
@staticmethod
def ctx_func_init():
iNoteContext.__funcs__ = list()
def warp_inote_blog_ctx(name='inote_blog_ctx'):
def warpper(func):
def create_ctx(*args, **kwargs):
context = iNoteContext()
context.name = name
with context as ctx:
kwargs[name] = ctx
func(*args, **kwargs)
return create_ctx
return warpper
def register_enter_event(func):
iNoteContext.__funcs__.append(func)
def register(*args, **argv):
pass
return register
class iNote(iNoteContext):
pass
iNote.ctx_func_init()
@iNoteContext.register_enter_event
def a(ctx):
ctx['a'] = 1
@iNoteContext.register_enter_event
def b(ctx):
ctx['b'] = 2
@iNoteContext.register_enter_event
def c(ctx):
ctx['c'] = 3
@iNoteContext.warp_inote_blog_ctx('inote_blog_ctx')
def b(inote_blog_ctx):
print(inote_blog_ctx['a'])
print(inote_blog_ctx['b'])
print(inote_blog_ctx['c'])
b()
#
# print(dir(iNote))