2014-09-19 13 views
10

Bir değişkeni yerel kapsamdan nesne seviyesine taşımak istiyorum. Ben refactor çalıştı user den self.user için adlandırmak >>"user" dan "self.user" ye pyCharm ile refactor

class Foo(object): 
    def test_foo(self): 
     self.user=User() # I can remove this line by hand 
     ... 
     self.user.do() 

ama pycharm diyor:

class Foo(object): 
    def test_foo(self): 
     user=User() 
     ... 
     user.do() 

Yeni kod aşağıdaki gibi görünmelidir: yeni kod eskisi gibi self.user değil user kullanmalıdır "Eklenen tanımlayıcı geçerli değil "

Bunu pyCharm ile nasıl yeniden düzenleyebilirim? Yapmanız çalıştığımız şey

cevap

6

değil basit yeniden adlandırma, ama öznitelik yeni örneğini oluşturarak olduğunu. Bu şekilde, Rename'u kullanmak yerine Extract> Field menü öğesini kullanmalısınız. Alternatif Ctrl + Alt + F (bu seçtiğiniz kısayolları bağlıdır. Mine KDE için varsayılan) olarak üstlenmeden erişebilirler.

+0

Yardımı nasıl * * Çıkar * Alan * çalışır. Değişkenin yapıldığı noktada, * foo * 'dan * self.foo *' ya kadar olan değişkeni değiştirir, fakat söyleyebildiğim kadarıyla kodun herhangi bir yerinde değişmez. Ayrıca, onu * bar * olarak çağırdığımda, metin giriş alanı * self.l * ile açılır ve * bar * 'ı yeniden yazmam gerekir. Bir şey bana doğru anlamadığımı söylüyor. İstediğim şey, * foo * 'yu * foo.bar * ile koddaki uygun yerlerin hepsine, hataya açık bir şekilde yapmak zorunda kalmadan değiştirmektir. * Bul/Değiştir " – garyp

+0

PyCharm'ın yerel bir değişken olduğunu bilmenin bir yolu yoktur. aynı isim, yeniden adlandırdığınız ile aynı şekilde ele alınmalıdır. Farklı bir işleve sahip farklı bir işleve sahip bir "kullanıcı" olabilirsiniz. İstediğinizi bildiğim kadarıyla bir bul ve değiştir. Emin olmak için PyCharm'ın onay istemesini sağlayabilirsiniz. – Bakuriu