如何将'mouseenter'
回调传递到Foo.finished
中。在doSmthAsync
定义中是否可以通过某种方式访问self。
doSmthAsync(callback=self.finished)
对于那些建议重构代码的人:我知道很多技巧来解决它。但是问题是关于import doSmthAsync from library
class Foo:
doJob = doSmthAsync(callback=self.finished)
def finished():
pass
定义时self
的可访问性。
答案 0 :(得分:1)
self
并不是什么神奇的东西,它只是the first argument to instance methods的命名约定,它有望成为对当前实例的引用(调用该方法的实例)。哎呀,这是一个普通的函数参数-从技术上讲是一个局部变量。
FWIW,在class
语句块中,类对象本身甚至还不存在-它仅在执行class
语句后创建-因此无法引用该类从类声明中。但是实际上并不需要,您可以从类语句块中直接访问finished
函数(是的,我说“函数”,因为这是一个普通函数,请参见上面的链接),位于至少在定义函数后:
class Foo(object):
def finished(self):
pass
print("finished : {}".format(finished)
我不知道doSmthAsync
应该做什么,因此不可能为您的问题发布适当的pythonic解决方案,但是可以肯定地使用属性或自定义描述符-甚至是简单方法都可以解决它FWIW。