Pythonメソッド解像度ミステリー
-
29-10-2019 - |
質問
なぜこのプログラムが失敗しているのかわからない。
#!/usr/bin/env python
from __future__ import division, print_function
from future_builtins import *
import types
import libui as ui
from PyQt4 import QtCore
import sip
p = ui.QPoint()
q = QtCore.QPoint()
def _q_getattr(self, attr):
print("get %s" % attr)
value = getattr(sip.wrapinstance(self.myself(), QtCore.QPoint), attr)
print("get2 %s returned %s" % (attr, value))
return value
p.__getattr__ = types.MethodType(_q_getattr, p)
print(p.__getattr__('x')()) # Works! Prints "0"
print(p.x()) # AttributeError: 'QPoint' object has no attribute 'x'
boost.pythonを使用して、クラスqpointを公開するLibuiを作成しました。 ASOには、SIPに曝露されたQポイントを備えたPyQT4が含まれています。 2つのタイプ間のマッピングを達成しようとしています。
私はそれをチェックしました p
新しいスタイルのクラスなので、なぜそうではないのか __getattr__
求められている p.x()
?
正しい解決策はありません
所属していません StackOverflow