AND*_*DEN 0 python oop variables function
假设我有一个带有一个函数作为参数的方法的类.有没有办法让这个函数改变inclass变量?
def f():
# something here to change MyClass.var
class MyClass:
def __init__():
self.var = 1
def method(self, func):
#does something
func()
obj = MyClass()
obj.method(f)
print(obj.var)
Run Code Online (Sandbox Code Playgroud)
只需将您班级的内部参考 - self- 传递到函数中:
>>> class Class:
def __init__(self):
self.var = 1
def method(self, func):
func(self)
>>> def func(inst):
inst.var = 0
>>> cls = Class()
>>> cls.var
1
>>> cls.method(func)
>>> cls.var
0
>>>
Run Code Online (Sandbox Code Playgroud)
在一个相关的方面,我认为让你的函数成为你班级的一种方法会更清晰,更清晰:
>>> from types import MethodType
>>>
>>> def func(self):
self.var = 0
>>> class Class:
def __init__(self):
self.var = 1
>>> cls = Class()
>>> cls.var
1
>>> cls.func = MethodType(func, cls)
>>> cls.func()
>>> cls.var
0
>>>
Run Code Online (Sandbox Code Playgroud)