コードPyObject
の一部を に埋め込む作業を行っています。Pythonインスタンスを作成するために使用するとうまくいく解決策を見つけました。ただし、このような新しいスタイルの python クラスでは機能しません。python
C++
python 2.7
PyInstance_New
class B(object):
def __init__(self, name):
self.name = name
def print_name(lastName):
print self.name + " " + lastName
私の古いコード ( python 2.7
) では、クラス定義はオブジェクト クラスから継承されず、print_name
このようにメソッドを呼び出すためにインスタンスを作成します。PS ファイル名は A.py です。
PyObject *import, *attr, *instance, *methodcall, *arg, *tuple;
arg = PyString_FromString("hello");
tuple = PyTuple_Pack(1, arg);
import = PyImport_ImportModule("A");
attr = PyObject_GetAttrString(import, "B");
instance = PyInstance_New(attr, arg, NULL);
methodcall = PyObject_CallMethod(instance, (char *) "print_name", (char *) "(s)", (char *) "Bill");
python 3.x
しかし、上記のコードは、 newではではなく をtype(class)
返すため、もう機能しません。今、私はこのエラーが発生しています。object
instance
内部関数への引数が正しくありません。
どんな助けでも大歓迎です。ありがとうございました。