7.12小节完成~
This commit is contained in:
@@ -29,3 +29,38 @@ f = sample()
|
||||
f()
|
||||
f.set_n(10)
|
||||
f()
|
||||
|
||||
import sys
|
||||
class ClosureInstance:
|
||||
def __init__(self, locals=None):
|
||||
if locals is None:
|
||||
locals = sys._getframe(1).f_locals
|
||||
|
||||
# Update instance dictionary with callables
|
||||
self.__dict__.update((key,value) for key, value in locals.items()
|
||||
if callable(value) )
|
||||
# Redirect special methods
|
||||
def __len__(self):
|
||||
return self.__dict__['__len__']()
|
||||
|
||||
# Example use
|
||||
def Stack():
|
||||
items = []
|
||||
def push(item):
|
||||
items.append(item)
|
||||
|
||||
def pop():
|
||||
return items.pop()
|
||||
|
||||
def __len__():
|
||||
return len(items)
|
||||
|
||||
return ClosureInstance()
|
||||
|
||||
s = Stack()
|
||||
print(s)
|
||||
s.push(10)
|
||||
s.push(20)
|
||||
print(len(s))
|
||||
print(s.pop())
|
||||
print(s.pop())
|
||||
|
||||
Reference in New Issue
Block a user