2012-01-27 13 views
5

Yakın bir zaman önce PyCharm'ı aldım ve Wing'in bir özelliğinden, IDE'ye hangi sınıfın belirli bir tanımlayıcının (değişken, öznitelik, her neyse) olacağını söyleyebildiğiniz bir özellik için kullanıyorum. Örneğin:PyCharm'a bir öznitelik örneğinin hangi sınıfta olduğunu açıkça belirtmenin bir yolu var mı?

my_object = SomeClass() 
assert isinstance(my_object.my_attribute, SomeOtherClass) 

Bu noktada, Kanat aksi kaynak kod analizi onu çözemedim bile eğer my_object.my_attribute tam olarak ne olduğunu bilir.

PyCharm'da benzer bir özellik arıyorum. Bir nesnenin belirli bir özelliğinin ne olduğunu biliyorum, ama PyCharm yapmıyor, bu yüzden nasıl anlatabilirim, bu yüzden bana kullanışlı tamamlamalar verebilir?

İlgili soru: Ben de benzer bir soru, How can I tell PyCharm what type a parameter is expected to be? görüyorum, ama özelliklerini, sadece parametreleri kapsamaz.

cevap

7

Aslında PyCharm aynı zamanda 'iddianın isinstance' sözdizimini de, ancak sadece niteliksiz referanslar için anlar. Ben de nitelikli referanslar için bunu desteklemek için bir sorun bulundum:

mevcut sürümünde http://youtrack.jetbrains.net/issue/PY-5614

, sen SomeClass ilanına gidip bir epydoc veya sfenks docstring'ini ekleyerek my_attribute türünü belirtebilirsiniz öznitelik için. Ben aradığınız doğru ne soru pycharm genel tür kesmesi olduğunu anlamak

2

Bu benim (2.6.2)

class Rule (object): 
    def __init__(self, *args): 
     self.criteria = [] 
     """@type : list of Criterion""" 
     crit = self.criteria[0] 
     #on this line, code completion works for "crit" 
5

için çalışıyor. İstatistiksel olarak yazılan bir dilden geldiğimde, kodun tamamlanmasını kullandığımda şaşkındım ve seçenekler python kitaplığının içeriği kadar sayılırdı.

PyCharm'da, çalışma zamanı sırasında tür bilgisi toplama ve bunu geliştirme süresi boyunca kullanılabilir hale getirme seçeneğine (ör. Kod tamamlama) sahip olduğumdan eminim. İşte

değil mi gerekmez (eğer "debug" olarak

size kod "kod içgörü için çalışma zamanı türlerini toplayın" ... Bunu nasıl

Tercihler> Python Debugger> ise kesme noktası kullan). PyCharm, tüm kod gezinme/tamamlama için daha iyi öneriler sunmaya başlayacaktır.

Alkış

Picture of Debug Preferences

İlgili konular