如何从全局类scop访问self.function

2024-09-30 02:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将Foo.finished回调传递到doSmthAsync。当doSmthAsync(callback=self.finished)定义时,是否有可能访问self

import doSmthAsync from library

class Foo:
    doJob = doSmthAsync(callback=self.finished)

    def finished():
        pass

对于那些建议重新构建代码的人:我知道很多解决方法。但问题是self的可访问性,而doSmthAsync(callback=self.finished)的定义


Tags: 代码fromimportself定义foodefcallback
1条回答
网友
1楼 · 发布于 2024-09-30 02:28:42

self并不是什么神奇的东西,它只是the first argument to instance methods的命名约定,它应该是对当前实例(方法被调用的实例)的引用。这是一个普通的函数参数,严格来说是一个局部变量

FWIW,在class语句块中,类对象本身甚至还不存在—它只是在执行class语句之后创建的—因此无法从class语句中引用类。但实际上您不需要,您可以从class语句块中直接访问finished函数(是的,我说的是“函数”,因为此时它是一个普通函数,参见上面的链接),至少在定义函数之后:

class Foo(object):

    def finished(self):
        pass

    print("finished : {}".format(finished)

我不知道doSmthAsync应该怎么做,所以不可能发布一个合适的pythonic解决方案来解决您的问题,但它肯定可以用一个属性或自定义描述符来解决,甚至可以用一个普通的方法FWIW来解决

相关问题 更多 >

    热门问题