C'è una differenza fondamentale tra il mondo Smalltalk e il mondo Python. In Smalltalk, si lavora con un'immagine , mentre in Python c'è una distinta vista statica e dinamica del programma / progetto.
Il solito modo di colmare questa differenza sul lato Python consiste nel migliorare gli strumenti di analisi statica e nel rendere più semplice l'interazione con un programma in esecuzione, essendo in grado di eseguire spesso piccoli blocchi di un programma ed esaminando il programma in esecuzione in un debugger o strumento come Jupyter Notebook.
Fammi parlare di PyCharm ( link ) come IDE di tua scelta.
Static
PyCharm ha capacità di analisi statiche decenti e uno può inserire suggerimenti di tipo statico per aiutarlo link
- ricerca classe / metodo / nomi etc --- link
- esamina le gerarchie di ereditarietà --- ci sono le icone di grondaia, e anche link
Dinamico
La strada per riuscire a eseguire piccoli pezzi del tuo programma spesso sono test unitari, naturalmente. Se hai questi, dovresti sempre essere in grado di trovare / scrivere un test che ricreerà lo stato del programma che ti interessa ispezionare.
- funzionalità per mostrare l'interfaccia completa di una data classe / oggetto, e dove le proprietà sono originate --- ottenere un punto di interruzione con un'istanza in ambito, e ispezionarlo valutando l'istanza. chiamando
help(instance)
. link . C'è una richiesta di funzionalità aperta link .
- un debugger grafico integrato che
- consente di esaminare lo stato completo di tutto il sistema - puoi valutare espressioni arbitrarie link
- e vedi ogni istanza di un determinato tipo --- puoi, ma non c'è una GUI "heap explorer" per esso link
- Non ho mai voluto farlo da solo. Presumo questo perché non ho un'immagine a lunga corsa e ricreare il processo ad ogni esecuzione. Se avessi un server di applicazioni a lungo funzionante, potrei volerlo. Mi sembra una funzione di admin / ops, più della funzionalità di sviluppo.
- così come tutti i thread --- nessun problema, e c'è anche link
In Python, raramente (mai?) pensiamo in termini di "stato completo di tutto nel sistema". Questo è probabilmente un Smalltalkism.
Combinazione dei due
C'è una funzione PyCharm che arricchisce la vista statica del programma dalle informazioni raccolte in fase di esecuzione durante le sessioni di debug link