ugrás a tartalomhoz

eclipse pydev kódkiegészítés? (egyéb IDE?)

eddig bírtam szó nélkül · 2012. Szep. 15. (Szo), 14.10
Python programok szerkesztéséhez használnám az Eclipse Pydev-t.
Viszont a kódkiegészítéssel komoly gondjaim adódtak.

mainWindow=QtGui.QMainWindow()

Ez még OK, a mainWindow-ról tudja a szerkesztőm, hogy ő egy QMainWindow típusú objektum.

menuBar=mainWindow.menuBar()

Ez már problémás. A mainWindow.menuBar() egy QtGui.QMenuBar típusú objektumot ad vissza, de erről már nem tudom az eclipse.
Ha a fentit kicsit kiegészítem:

menuBar=mainWindow.menuBar()
assert isinstance(menuBar, QtGui.QMenuBar)

akkor már az menuBar változóval is működik a kiegészítés. (assert hasonlóan működik, mint bármely xUnit keretrendszerben, de futtatáskor kikapcsolható)
De...

self.menuBar=mainWindow.menuBar()
assert isinstance( self.menuBar, QtGui.QMenuBar )

ez már nem jó! Pusztán az elé írt "self." miatt...(a self. nélküli változók lokálisak, a self. kezdetűek az objektum változói/attribútumai)

Valami ötlet arra, hogy hogyan tudnám elmagyarázni a pydev-nek, hogy a self.xxxx változók milyen típusúak?
Google-n olyasmit kerestem, hogy "eclipse pydev code completion typecast", de csak az assert-es tippet találtam. :-(
Ha valaki tudna olyan Python IDE-t, ami ingyenes, windows-on+linuxon is fut, tud debuggolni, használható a kódkiegészítése, van benne refaktorálást segítő funkció stb., azt is szívesen veszem. (IDLE elég gyengécske :-( )
 
1

Komodo?

Poetro · 2012. Szep. 15. (Szo), 18.39
A Komodo IDE-t vagy annak ingyenes Komodo Edit változatát próbáltad?
2

IDE drága ahhoz, hogy játékra

eddig bírtam szó nélkül · 2012. Szep. 15. (Szo), 19.01
IDE drága ahhoz, hogy játékra használjam (warez nem az én műfajom), az Edit meg nem tud debugot. (ráadásul a kódkiegészítés még macerásabbnak tűnik, mint eclipse esetében: google-ben nem találtam olyan lehetőséget, hogy pl. kommentben megmondjam, milyen típusú az adott változót)
Tartok tőle, hogy jobb híján marad az eclipse.
4

Komodo Edit

Pepita · 2012. Szep. 16. (V), 00.20
Nehéz is (jó) kódkiegészítő megoldást találni hozzá, nekem PHP-s problémára sem sikerült. (Inferno talált egy megoldást, de az nem működött.) Végül sok hajtépés után rájöttem, ha tudod, használd fel. Esetleg nézz még rá a NetBeans-re, nem tudom, python-ra mennyire jó.
6

Netbeans

eddig bírtam szó nélkül · 2012. Szep. 16. (V), 07.50
PHP-re nekem tökéletesnek tűnt, bár nem mélyedtem el benne eléggé, viszont a Python támogatást pár verzióval ezelőtt kivették belőle és úgy láttam, a közösség kezébe került plugin elhalt. Legalábbis mindenhol a PyDev-t ajánlották, az meg eclipse...
Komodo Edittel az a gond, hogy nem tud debuggolni.
3

Workaround

eddig bírtam szó nélkül · 2012. Szep. 15. (Szo), 21.22
Hát egy kerülőutat sikerült kitalálnom: a konstruktor végére egy return és mögé, mintha még a konstruktorhoz tartoznának, felsorolni a példányváltozókat (hogy mit törtem ezen a szón a fejem, már reggel óta... :-( ) egy-egy a típusának megfelelő értékadással.

def __init__(self):
    ... ide jön a tényleges konstruktor kód ...
    return

    self.mb=QtGui.QMenuBar()
    self.wg=QtGui.QWidget()
    ...
Ha szintaktikailag rendben vannak, akkor nincs velük gond, nem fut rájuk az interpreter, a paraméterezésüknek nincs jelentősége. Ocsmány egy megoldás, de órák óta túrom a google-t és nem találtam jobbat. :-(
5

:(

Pepita · 2012. Szep. 16. (V), 00.24
Hát ez olyan csúnya, hogy üss a kezedre. Mivel ez egy konstruktor, u.ezt megteheted az elején is (ha van benne vmi statikus adat, akkor azt is a konstruktorban add meg). Én ilyen, soha le nem futó kódot véletlenül sem használnék.
7

Ez épp olyan csúnya, mint

eddig bírtam szó nélkül · 2012. Szep. 16. (V), 07.56
Ez épp olyan csúnya, mint teljesen felesleges assert (*) sorokat vagy még feleslegesebb értékadásokat elhelyezni a kódban.
Sajnos más lehetőség nincs rá, hogy jelezd a példányváltozó típusát a PyDev felé. :-(

* = az assert annyiból jobb, hogy ha a pythont -O opcióval indítom, akkor bekapcsol egy alap optimalizálót, amitől az assert sorokat kommentként kezeli az interpreter. Épp csak annyi a baj vele, hogy példányváltozókra nincs hatása az eclipse-es környezetben. (az eredeti funkciója működik, de a pydev nem törődik vele)
9

Ahogy gondolod

Pepita · 2012. Szep. 16. (V), 23.24
Nekem elméleti szempontból nagyon gáz a return utáni kód, de mivel pythonhoz nem tudok konkrét javaslatot tenni, nem is vitatkozhatok rajta.

Ugyanez okból azt sem tudtam, hogy NetBeans-ben nincs python, ezt a szerkesztőt csak kipróbáltam (PHP-hoz).
8

JetBrains

tlof · 2012. Szep. 16. (V), 21.07
Hello,

Én most php-ból váltottam netbeans-ről / Zend Studió 5.5 -ről a PhpStormra, és van pythonos editoruk.

http://www.jetbrains.com/pycharm/

Van teljes értékü 30 napos trial, ha meg meg kell venni, nem olyan drága.