3
我想用python閉包來做一些有點奇怪的事情(至少對我來說)。說我有2類這樣的:python closure + oop
#!/usr/bin/python
import types
def method_a(self):
print "ma %d" % self.val
class A(object):
def __init__(self):
self.val = 5
pass
def foo(self, a):
def closure(self):
print "closure %d, %d" % (self.val, a)
return closure
class B(object):
def __init__(self):
self.val = 10
pass
def foo(self):
print "B::foo %d" % self.val
a = A()
b = B()
b.undo = types.MethodType(a.foo(1), b)
b.undo()
所以對象a的方法返回一個封閉於由對象B可以使用與封閉功能將被綁定到對象B與上述代碼將導致:
closure 10, 1
我的問題是:是否有無法讓closure()方法訪問對象的屬性,方法?
感謝,
@NullUserExceptionఠ_ఠ,是不是閉包功能閉包? –