小编Che*_*hop的帖子

python在类中的dll回调函数中访问self

我有一些 api 的 dll 函数,如下所示:

def dllcallback(items):
  pass
Run Code Online (Sandbox Code Playgroud)

我想在与 dll 回调链接的类函数中访问 self。

class myobject(object):
  def __init__(self):
    self.a = 999
  @dllcallback
  def mycallback(self, items):
    print (self.a)
    self.a = 888
    print (self.a)
Run Code Online (Sandbox Code Playgroud)

我不认为 dllcallback 接受 self 作为参数。所以这是失败的。我希望当 api 调用 dllcallback 时 myobject.mycallback 会触发,并显示:

999
888
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的方法来使“self”可以被内部函数访问,但是这种方法杀死了内核......

class myobject(object):
  def __init__(self):
    self.a = 999
  def callbacks(self):
    @dllcallback
    def mycallback(items):
      print (self.a)
      self.a = 888
      print (self.a)
Run Code Online (Sandbox Code Playgroud)

我不确定内核死亡的原因。预先感谢您的任何建议。

更新:20180912 1436

实际上,可以在没有 self 作为参数的情况下调用重写方法,

class myobject(object):
  def __init__(self):
    self.a = 999
  @dllcallback
  def mycallback(items):
    global …
Run Code Online (Sandbox Code Playgroud)

python ctypes

5
推荐指数
1
解决办法
1916
查看次数

标签 统计

ctypes ×1

python ×1