类方法中定义的python函数可以访问self吗?

乔治

以此类为例:

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应该调用需要回调以两个参数的外部函数,arg1arg2我想通过允许此回调使用内部声明的变量来扩展功能,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

可以在函数中定义__repr__,并且函数是类吗?

在Python中使用类方法时,可以解构`self`吗?

内部类中的方法可以访问父类方法吗?

lambda 函数可以返回 Python 中定义的函数吗?

可以通过python中的索引访问类实例吗?

如何从python类函数访问对self的调用

python类中的方法可以用子类定义的类型注释吗?

在python中,有什么方法可以在定义类后自动运行函数?

可以在 Python 的类中调用有状态函数吗?

我可以将self作为python中类方法的第一个参数传递吗

我可以使用self访问类变量吗?

Python 闭包:在函数内部定义的函数可以访问上一级的变量吗?

函数可以访问在它自己的父函数中定义的变量吗?

线程可以调用类函数并访问类数据吗?

我们可以在 Haskell 中定义一类函数定义吗?

MyApp() 类中定义的访问函数 - Flutter

可以访问类数据成员并在析构函数中对它们执行操作吗?

我可以在Python的类方法中添加属性吗?

我们可以访问自定义函数中传递给组件的道具吗

我可以在multer自定义存储引擎_handleFile函数中访问res对象吗?

在哪里可以找到python中类的方法定义?

Python可以打印函数定义吗?

在OPP JS中,您可以从构造函数访问在原型函数内部声明的方法吗?

猴子修补程序可以代替类中现有的函数定义吗?

React-类中的自定义函数可以拆分为其他文件吗?

我们可以在构造函数中定义静态类成员吗?

虚函数可以访问基类的朋友吗?

在JavaScript类中调用父方法,但stll可以访问对象实例内部的原型方法吗?

我可以在同一个函数中访问python函数吗?