2009-11-05 15 views

Odpowiedz

8

To tak naprawdę nie odpowiada na twoje pytanie, ale dzięki Wing IDE możesz podać wskazówki do analizatora typów z assert isinstance(b, A). Zobacz here. Nie znalazłem sposobu na zrobienie tego z Komodo, chociaż podobno jest to possible podczas pisania PHP lub JavaScript.

Aktualizacja:

Znalazłem sposób na oszukanie Komodo w ten sposób:

if 0: b=A() 

To działa (przynajmniej na Komodo 5.2) i nie ma skutków ubocznych, ale jest pewien pomylić tego, kto czyta twój kod.

+1

Co za okropny hack! Po prostu jestem zazdrosny, że znalazłeś to pierwszy :) Ja bym dawał +1, gdybym nie był. –

+0

Myślę, że zamierzam zmienić na Wing IDE. Składnia assert isinstance (b, A) działa ładnie. –

+0

Cieszę się, że działa to również z moją konfiguracją Emacs 24 + Jedi. –

3

Nie sądzę, że będziesz miał z tym dużo szczęścia. Problem polega na tym, że naprawdę trudno jest statycznie wnioskować o typie zmiennych w Pythonie, z wyjątkiem najprostszych przypadków. Często typ nie jest znany do czasu wykonania, więc automatyczne uzupełnianie nie jest możliwe.

IDE wykonuje analizę statyczną, aby ustalić oczywiste i najlepsze domysły, ale założę się, że nie próbuje nawet elementów w pojemniku. Chociaż możemy się domyślić, że b jest typu A, nawet małe odmiany kodu mogą sprawić, że będzie on niepoznawalny, zwłaszcza że znajduje się w zmiennym pojemniku.

Nawiasem mówiąc próbowałem tego na pełnym IDO Komodo i nie jest to lepsze. Słyszałem, że Wing IDE ma znakomite uzupełnianie kodu, ale nie byłbym pewien, czy mógłby zrobić coś lepszego.

+0

Rozumiem, że automatyczne wnioskowanie o typ jest trudne. Chcę zrobić to ręcznie. W tym czasie zobaczę Wing. –

+0

Ah, teraz rozumiem. Moją pierwszą myślą było twierdzenie, że interjay wspomina, ale to nie działa dla Komodo. Jedyne, co mogę zrobić, to dodać 'b = A (b)', ale to jest okropne, nie gwarantuje działania i ma efekty uboczne. –

+0

całkowicie zgadzam się, myślę, że wykonanie kodu nie działa dla języków dla Pythona, tak jak dla mnie, zawsze jestem świadomy tego, co się dzieje i SO – zinking