問題タブ [pyobject]
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:PyObjectの文字列表現を取得しますか?
C python 拡張機能を持っているので、診断結果を出力したいと思います。
文字列を PyObject* として受け取っています。
const char * として使用できるように、このオブジェクトの文字列表現を取得する標準的な方法は何ですか?
更新:アクセスを const char * として強調するように明確化しました。
python - PyObject*メンバーを持つC構造体として定義されたPython拡張タイプを選択する
Python経由でC++コードを実行していて、拡張タイプを選択したいと思います。
したがって、Pythonタイプのオブジェクト(t_db_manager)でラップしたデータベースオブジェクトとオブジェクトマネージャーオブジェクト(どちらもC ++で記述)へのポインターを含むC ++構造(py_db_manager)があります。私の問題は、このpythonタイプは、いくつかの子マルチコアプロセスに送信するために、2つのポインターをピクルスにする方法を知っている必要があるということです。そこで、型をcopy_regモジュールに登録しました(これは、型にreduce()メソッドを記述することと同じです。ただし、何を入れるかがよくわかりません。PyObject*を使用してタプルを作成する必要があります。整数ポインタ?。誰か助けてもらえますか?
これがPy_TypeObjectです
そして、 reduceメソッドに含まれるコードは次のとおりです。
c++ - 関数が重要な引数を取る場合、SWIG を介して Python で C++ コールバックしますか?
「SWIG and Python」チュートリアルの次のセクションを読みました: http://www.swig.org/Doc1.1/HTML/Python.html#n11
例で彼らが何をしているのか理解しています。基本的には、python を呼び出す C 関数を記述します。ただし、提供されている例では、引数リストで double のみを使用しているため、python の引数リストを構築するのはかなり簡単です。
次のシグネチャを持つ C++ コールバックがあります。
ここで、Vector と Simulation は私自身のクラスであり、void* は PyObject を保持する clientData 用です (例で使用されているように)
SWIG が Vector クラスと Simulation クラスの両方をラップしていることはわかっています。なぜなら、それらは Python シェルで作成できるからです。唯一の問題は、コールバック関数の Vector 引数を Python 引数リストの適切な PyObject に変換する方法がわからないことです。SWIG には、クラス自体をラップするときに明らかにこれを行う方法がありますが、関数で手動で行う方法がわかりません。
どんな助けでも大歓迎です!-追跡
python - Python と Gtk+3 のエントリの問題
男の子も女の子もよろしくね!
私は Gtk+ のプログラミングが初めてで、「まともな」オープンソースの twitter クライアントが必要ですが、見つからないので、オープンソースになるものを開発しています。私は Gtk+3 と Python (PyGtk ではなく PyGObject) を使用していますが、エントリに 2 つの問題があり"deleted-text"
ます"inserted-text"
。私は試しself.tweet_text.connect("inserted-text", self.on_tweet)
てみましself.tweet_text.set_property("inserted-text", self.on_tweet)
たが、失敗し続けます。2 - tweet_text を複数にすることができません。
ここでドキュメントを検索しましたhttp://readthedocs.org/docs/python-gtk-3-tutorial/en/latest/しかし、それに関連するものは何も見つかりません。また、Gtk+3 に関連する C ドキュメントも検索しました。
誰かが助けてくれれば幸いです。前もって感謝します。
python - PyObjectのインスタンスレイアウトを宣言するために使用される構造体を決定する方法は?
私は C++ で Python 3 拡張機能を作成してPyObject
います。インスタンス レイアウトを定義する型 (構造体) に a が関連しているかどうかを確認する方法を見つけようとしています。PyObject
ではなく、 static-size にのみ興味がありますPyVarObject
。インスタンス レイアウトは、明確に定義された特定のレイアウト (必須PyObject
ヘッダーと (オプション) ユーザー定義メンバー) を持つ構造体によって定義されます。
以下は、Defining New Types のよく知られた Noddy の例にPyObject
基づく拡張の例です。
Noddy
は型であり、コンパイル時のエンティティですがNoddyType
、実行時にメモリ内に存在するオブジェクトであることに注意してください。Noddy
との間の唯一の明らかな関係は、メンバーに格納されNoddyType
ている値のようです。sizeof(Noddy)
tp_basicsize
Python で実装された手書きの継承PyObject
は、特定の のインスタンス レイアウトを宣言するために使用される と タイプの間でキャストできるようにするルールを指定しPyObject
ます。
さまざまなスロット関数のような状況では、「Python オブジェクトは Noddy である」と想定して、チェックなしでキャストしても問題ありません。ただし、他の状況でキャストする必要がある場合があり、ブラインド変換のように感じます。
を確認することはできますがsizeof(Noddy) == Py_TYPE(obj)->tp_basicsize
、次の理由により解決策としては不十分です。
1) ユーザーが派生する場合Noddy
とのインスタンスへのポイントはobj
異なります。ただし、インスタンス レイアウト パーツへのポインターを取得するためにキャストしても安全です。foo
BabyNoddy
Py_TYPE(obj)->tp_basicsize
reinterpret_cast<Noddy*>(obj)
2) と同じサイズのインスタンス レイアウトを宣言する他の構造体が存在する可能性がありますNoddy
。
実際、C 言語レベルでは、構造体は型オブジェクトNeverSeenNoddy
と互換性があり、. したがって、キャストはまったく問題ありません。NoddyType
NoddyType
だから、私の大きな質問はこれです:
がインスタンス レイアウトPyObject
と互換性があるかどうかを判断するために使用できる Python ポリシーはありますか?Noddy
PyObject*
に埋め込まれているオブジェクト部分を指しているかどうかを確認する方法はありNoddy
ますか?
ポリシーではない場合、ハッキングの可能性はありますか?
編集:似ているように見える質問がいくつかありますが、私の意見では、私が尋ねたものとは異なります。例: PyObject の基になる構造体へのアクセス
EDIT2: Sven Marnach の回答を回答としてマークした理由を理解するには、その回答の下のコメントを参照してください。
python - 2 番目の引数として非組み込みクラスで PyObject_IsInstance を使用するにはどうすればよいですか?
PyObject
C/C++ で、aがインスタンスかどうかを確認したい。残念ながら、このPyInstance_Check
マクロは新しいスタイルのクラスでは機能しません。
したがって、私が読んだフォーラムの投稿によるとPyObject_IsInstance
、問題を解決できます。ただし、私が見つけたすべての例は、int や string などの組み込み型との比較を示しています。
型のクラスを表す PyObject を構築する方法を知りたいので、それを の 2 番目の引数に渡すことができますPyObject_IsInstance
。手伝って頂けますか?
python-3.x - ファイル PyObject (Gtk) を Pydev でコンパイルする際のエラー
私は Pydev で pyobject (gtk) を使用してアプリケーションを構築していますが、次の方法でウィンドウを作成しようとしています:
クラス ベンタナ
クラス アプリケーション (メイン):
しかし、私はアプリをコンパイルしようとしています。次の間違いを示してください:
インポートを使用してみます
しかし、モジュールが見つからないため、機能しません。だから私はインポートを使用しています:
¿トラブルを解決するには?
下手な英語でごめんなさい
ありがとう。
python - PyObject メソッドに必要な引数の数を調べる
を使用して、Python メソッドを指す PyObject を抽出できます。
メソッドが受け取る引数の数を知りたいです。したがって、関数が
2 つの引数が必要かどうかを調べるにはどうすればよいですか?
python - PyArg_ParseTupleの適切な使用法は何ですか
PyArg_ParseTupleの正確なusgaeと思われるものを使用していますが、コードはまだ機能していません。私はPython2.7を使用しています
これは私が書いているPython拡張機能のCコードです。
次に、拡張機能をビルドしてターミナルimport etに移動すると、et.tpp([1,2])は行の出力に失敗しますif(PyArg_ParseTuple(item、 "i"、&arrayValue)!= 0){printf( " %d \ n "、arrayValue); printf( "horray!\ n"); }
コードでわかるように、リスト内の要素のタイプを確認すると、「int」が出力されます。しかし、何らかの理由でPyArg_ParseTupleにエラーが発生しています。
Pythonのリストから情報にアクセスしてデータをコピーし、それを他の場所のCコードに渡して、結果をPythonに返すことができる必要があります。
どうもありがとう!
c++ - C++ および Python - PyObject の型チェックが失敗する
私は少し混乱しています。C++ と Python の統合を試みていますが、簡単ではありません。Boost::Python を正しくコンパイルできなかったため、Boost を使用していません。しかし、それは別の話です。
現在、C ++で行っていることは次のとおりです。
Python プログラム (「data」という名前の文字列として C++ プログラムに入力):
問題は、型チェックが機能していないことです。Python 関数が float、list、または set を返すかどうかに関係なく、それらはすべて 0 を返します。私は何を間違っていますか?
PyRun_String の呼び出しがコンソールに戻り値を出力する理由を誰かが教えてくれればボーナスポイントです。それは本当に迷惑です。