我不完全确定如何说出来,但我会解释我要做的事情。
def function(self):
x = "x"
y = "y"
z = "z"
通过将此函数创建为类的唯一对象,我应该为变量本身分配内存。在创建类对象和调用此函数时,如何直接从此函数中获取变量?
(即class.function.x
)
我不是要求return
语法,我希望直接内存映射(或调用)此变量而不返回值。
答案 0 :(得分:1)
没有。函数返回时会破坏范围,并且所有局部变量都会被破坏。
答案 1 :(得分:1)
我不相信这些变量在函数运行之前被实例化,并且在函数返回时超出范围。如发布,我不认为你想要的是什么(很高兴得到纠正)。
但是你可以这样做,
class A(object):
def f(self):
pass
A.f.b = 42
当你上课时。然后可以访问A.f.b
。
答案 2 :(得分:1)
基本方法只记住符号,绑定在调用时发生。
一个类可以绑定变量,因此实例(对象)和方法调用都可以更改实例和类变量。
class Binder(object):
x = "x"
y = "y"
z = "z"
def f1(self):
self.x = "xx"
self.y = "yx"
self.z = "zx"
def f2(self):
Binder.x = "xx"
Binder.y = "yx"
Binder.z = "zx"
binder = Binder()
print(Binder.x) # class access
print(Binder.y) # class access
print(Binder.z) # class access
print(binder.x) # instance access
print(binder.y) # instance access
print(binder.z) # instance access
binder.f1()
print(Binder.x) # class access
print(Binder.y) # class access
print(Binder.z) # class access
print(binder.x) # instance access
print(binder.y) # instance access
print(binder.z) # instance access
binder.f2()
print(Binder.x) # class access
print(Binder.y) # class access
print(Binder.z) # class access
print(binder.x) # instance access
print(binder.y) # instance access
print(binder.z) # instance access
还有闭包主题 - 嵌套方法绑定封闭方法的值。
def mkclosure():
x = "x"
y = "y"
z = "z"
def closure():
# Need to reference them for the closure to be created.
return (x, y, z)
return closure
function = mkclosure()
for cell in function.__closure__:
print(cell.cell_contents)