以此类为例:
class MyClass(object):
def __init__(self):
self.attribute = 4
def my_method(self):
def my_fun(arg1, arg2):
self.attribute = 7
pass
应该my_fun
允许访问和更改self.attribute
?
我可以看到我的编辑器self
内部没有颜色my_fun
。
这就是我想实现:my_method
应该调用需要回调以两个参数的外部函数,arg1
和arg2
。我想通过允许此回调使用内部声明的变量来扩展功能,my_method
并使my_fun
回调向写入一些调试信息self.log
。我不太确定这是否是解决此类问题的正确设计。
是。self
只是另一个变量。它是python自动将对实例的引用作为第一个参数传入。而已。
您的内部函数将能够self
像访问常规对象的常规函数一样进行访问。
class MyClass(object):
def __init__(self):
self.attribute = 4
def my_method(self):
def my_fun():
self.attribute = 7
return my_fun
a = MyClass()
a.my_method()()
print(a.attribute)
输出:
7
您解释的设计很好;它存在的一个问题是“我想通过允许此回调使用在内部声明的变量来扩展功能my_method
”。
尽管您可以访问内部定义的变量my_method
,但从设计的角度来看,要以有意义的方式保存的变量最好作为实例中的属性。您将能够修改它们,并且它们会自动“保存”,而如果您想保留定义的内容的结果,my_method
则必须在函数调用结束时找到另一个放置它们的位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句