Come caso minimo, ho una classe Example
che funziona come una capacità astratta per una gamma di altre classi.Indicare i campi generati dal codice PyCharm della classe
class Example(object):
def __init__(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
class Test(Example):
def __init__(self, foo='bar'):
super(Test, self).__init__(foo=foo)
Nel caso reale, Example
fa più cose.
C'è un modo per comunicare su Test
PyCharm che Test
avrà un campo Test.foo
e anche meglio, farle sapere che foo
dovrebbe essere una stringa?
Per essere chiari, non è possibile delegare l'impostazione dei campi da Example
a Test
.
Il più vicino che ho ottenuto è il @ivar
di Epydoc, ma non posso farlo funzionare
AFAIK, non è possibile. Se si definiscono i membri di un oggetto dinamicamente, è necessario dimenticare i suggerimenti. È possibile definire gli attributi di classe su 'Test' che sarà" ombreggiato "dagli attributi di istanza, ma non vale il prezzo. Basta vivere con esso. – bgusach
* sospiro *, vabbè, ma grazie per la risposta. – deinonychusaur
Sì pitty, ma Pycharm dovrebbe essere estremamente intelligente per capire il codice e offrirti suggerimenti. In molti casi evito il codice "dinamico" a favore del codice "digitato manualmente" solo per avere un po 'più di sicurezza e godere anche delle annotazioni. Alla fine è un problema generale dei linguaggi tipizzati dinamicamente ... Gli IDE non possono fare troppo. – bgusach