問題タブ [python-c-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonのインスタンス変数と属性の違いは?
したがって、拡張機能を作成するための python docs には次のように書かれています。
「インスタンス変数を属性として公開したいと考えています。それを行う方法はいくつかあります。最も簡単な方法は、メンバー定義を定義することです。
そして定義を tp_members スロットに入れます:
ただし、すでにインスタンス変数を Noddy 構造体に入れています。
私の質問は、なぜそれらを両方の場所に置くのかということです。私の印象は、インスタンスが更新されたときに型の値を保持するために、型とインスタンスの両方にそれらを持たせたいからです。しかし、その場合、class 属性を変更するとインスタンス値はどのように更新されるのでしょうか? このような:
python - C-APIから名前でPython関数を呼び出す方法は?
c-api から、python 関数を名前で呼び出したいと思います。次に、Python オブジェクトのリストを引数として関数を呼び出します。
Python のドキュメントでは、メインの Python インタープリターから「Callable」オブジェクトを取得する方法が明確ではありません。
助けていただければ幸いです:
- 関数からアドレスを取得する
- PythonObject を引数として関数を呼び出します。
開発には Python 2.x シリーズを使用しています。
python - C-API を介してモジュールに新しいコマンドを追加しますか?
C-API を介してモジュールにメソッドを動的に追加するにはどうすればよいですか? 登録する必要がある多くの関数があり、それらは同じ配列にありません。ドキュメントには可能であると書かれているので、モジュールを NULL メソッド テーブルで初期化できると思います。
メソッドを 1 つずつ追加する関数の名前は何ですか。
python - Python C-APIで現在の関数名を取得するには?
一連の関数を実装しました。それらは、Python インタープリターによって呼び出された同じ C 関数からディスパッチされます。
予期せず、self が NULL であり、現在呼び出されている関数名を取得する必要があります。この情報を取得する方法はありますか?
私はすべてこのルーチンを通過している数十の機能を持っています。このコマンドは、すべてのオプションを C++ マップに処理し、それを各コマンドの実装に渡します。
更新: http://docs.python.org/extending/extending.html#a-simple-example具体的には、「self 引数は、モジュール レベルの関数のモジュール オブジェクトを指します。メソッドの場合は、オブジェクト インスタンスを指します。 ." ですが、python 2.6 に対してリンクすると null が渡されます。
python - c++0x std::shared_ptr と boost::shared_ptr の比較
shared_ptr
STLを多用する C++ コードがあります。一般的なヘッダーは言う
gcc 4.6 with を使用して、言語機能を利用するために c++0x に切り替えたいと思いました-std=c++0x
。ただし、現在もあり、未指定( vs )std::shared_ptr
のあいまいさにつながります。shared_ptr
boost::shared_ptr
std::shared_ptr
std::shared_ptr
代わりに切り替えると、次のようになります。
次に、で問題が発生しています。これは、 (少なくともさらにいじることなく)のみboost::python
でうまく動作しますboost::shared_ptr
したがって、私の質問は
boost::shared_ptr
との間のあいまいさを解決する簡単な解決策がある場合std::shared_ptr
(今のところ c++0x を使用しないこと以外)、また- ifは最終的に;
boost::shared_ptr
の単なるエイリアスになります。std::shared_ptr
それは私の問題を自動的に解決します。
ありがとう!
python - C関数からPyObject*を作成しますか?
作成しているC++ライブラリにPythonを埋め込んでいます。PyObject* (fpFunc*)(PyObject*,PyObject*);
組み込みPythonでこれらの関数を使用できるように、ユーザーがC関数を関数ポインターの形式で渡すことができるようにしたいと思います。
だから私は関数ポインタを持っていて、この関数をPyMethodDef
構造体を使ってモジュールのメソッドとして置き、それをに渡して、関数を簡単に取得できるPy_InitModule("module", ModMethods);
を取得できることを知っています。PyObject* module
しかし、私が本当に感謝しているのは、毎回別のモジュールを再作成する必要なしに、この関数をその場で作成できることです。
私はPythonのドキュメントといくつかのPythonヘッダーを調べて、実際の成功なしにこれを行うためのハッキーな方法について考えました...しかし、これを行うためのより一般的な方法があるかどうか疑問に思います。
私が理解したことから、すべての関数はモジュールに属している__builtin__
ので、少なくともモジュールで必要になると思います。
これを達成する方法について何かアイデアはありますか?
python - PyObject* が numpy.uint8 型を指しているかどうかを確認する方法
Python C-API を使用して、PyObject* が型 numpy.uint8 などを指しているかどうかを確認するにはどうすればよいですか?
(PyObject* が numpy.uint8 型のインスタンスを指しているかどうかではなく、numpy.uint8 型を指しているかどうかを確認したいことに注意してください。)
python - Cを使用してnumpy配列オブジェクトを2つの異なるサイズのベクトルに分割します
私は持っている
入力としての X --- これは dtype オブジェクトです これは次の構造です x=[[1,2,3,4...n 要素],[1 要素],[1,2,...m 要素], [1要素]]
入力を模倣するには...
X を引数として Python C 拡張機能に PyArray_Object として渡します
これを 4 つのオブジェクトに分割する方法がわからないため、ここで立ち往生しています。
python - C-APIを使用したNumpy配列の軸の反転
私はPythonC-APIを使用して、いくつかのC++コードをPythonパッケージとしてラップしています。結局、私はnumpy配列の軸を逆にする必要があります。
x = x [:、::-1]
Numpy C-APIを使用してこれを行う方法はありますか?軸を転置および交換するためのルーチンがあることは知っていますが、索引付けについてはあまりわかりません。何か案は?ありがとう、アンディ
python - Python: PyDateTime_FromTimestamp の使用法
私はpython c-extensionに取り組んでおり、UNIXタイムスタンプを持つpython datetimeオブジェクトのインスタンスを作成したいと考えています。
ドキュメント サイト ( http://docs.python.org/c-api/datetime.html ) で、入力パラメーターに基づいて新しい参照を返す関数 PyDateTime_FromTimestamp() を見つけました。
説明は次のとおりです 。datetime.datetime.fromtimestamp() に渡すのに適した引数タプルを指定して、新しい datetime.datetime オブジェクトを作成して返します。
PyFloat_Object を使用して関数を呼び出そうとしましたが、関数は常に NULL を返します (単純に 0 を入力しても)。
誰かが関数を呼び出す方法の例を持っていますか、それを機能させるためにどのような種類のパラメータータプルが必要かヒントを与えることができますか?
ありがとう!