PyObjC を使用している場合、Eclipse with PyDev で正しいコード補完が表示されません。私はこの問題についてグーグルで検索し、この記事で理由を見つけました。この記事では、PyDev が bridge-support ファイルの情報を読み取ることができないと述べており、それがこの問題の原因です。
この問題は、定義済みの補完を記述することで解決できることを知っています。しかし、PyObjC にはたくさんのクラス/メソッドがあります。たとえば、AppKit
モジュールには230393 個のクラスが含まれており、 26991 個のメソッドが含まれていますAppKit.NSWindow
。(私は PyDev でandを使用してそれらを数えます)interpreterinfo.py
pycompletion.py
PyDev の事前定義された完了スクリプトを多数生成する一般的な方法はありますか? または、PyObjC を使用しているときに正しい補完を取得する方法はありますか?
2013/03/12 07:56(JST)追記
objc
、Foundation
、AppKit
、Cocoa
などForce Builtin
を PyDevに追加します。これで、PyDev は以前よりも多くの提案を完成させてくれます。しかし、PyDev はalloc()
PyObjC のクラスでメソッドを見つけることができません。一般的なケースでは、以下のように NSWindow を初期化します。
from Foundation import *
from AppKit import *
:
:
window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
rect,
style_mask,
backing,
flag)
だから私alloc()
はタイプした後に補完候補として欲しいwindow = NSWindow.
.
最初の問題は、PyDev (および PyCharm などの他の IDE) がalloc
pyobjc のクラスでメソッドを見つけられないことです。インタラクティブシェルを使ってメソッドを見つけようとしましalloc
たが、それも見つかりませんでした。
2番目の問題は、最初の問題の結果として、NSWindow(またはPyObjCのいずれか)のインスタンスを作成するときに、PyDevが変数の型を分析できないことです。initWithContentRect_styleMask_backing_defer_
そのため、入力した後、PyDev は提案できませんwindow = NSWindow.alloc().
。
このような問題を解決する方法をご存知でしたら教えてください。