Desidero spostare una variabile dall'ambito locale al livello oggetto. Il nuovo codice dovrebbe utilizzare self.user
e non user
come prima:Refactor con pyCharm da "user" a "self.user"
class Foo(object):
def test_foo(self):
user=User()
...
user.do()
nuovo codice dovrebbe essere simile:
class Foo(object):
def test_foo(self):
self.user=User() # I can remove this line by hand
...
self.user.do()
ho cercato di refactoring >> rinominare user
-self.user
ma PyCharm dice: "identificativo inserito non è valido "
Come posso effettuare il refactoring con pyCharm?
Aiutami a capire come funziona * Extract> Field *. Cambia la variabile da, diciamo, * foo * a * self.foo * nel punto in cui è invocata, ma per quanto posso dire non lo cambia da nessun'altra parte nel codice. Inoltre, quando lo invoco, diciamo, * bar *, il campo di immissione del testo si apre con * self.l * e devo ridigitare * bar *. Qualcosa mi dice che non lo capisco correttamente. Quello che voglio è sostituire * foo * con * foo.bar * in tutti i punti appropriati del codice senza dover fare un errore * Trova/Sostituisci " – garyp
PyCharm non ha modo di sapere che una variabile locale, con lo stesso nome, è pensato per essere trattato allo stesso modo di uno che si sta rinominando. Si potrebbe avere un 'utente' in una funzione diversa che fa riferimento a qualcosa di diverso. Per quanto ne so, quello che vuoi è trovare e sostituire. Puoi fare in modo che PyCharm chieda conferma se vuoi essere sicuro. – Bakuriu