Als minimalen Fall habe ich eine Klasse Example
, die wie in der abstrakten Kapazität für eine Reihe anderer Klassen funktioniert.Erzähle PyCharm Code generierte Felder der Klasse
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)
Im realen Fall, tut Example
mehr Dinge.
Gibt es eine Möglichkeit PyCharm zu auf Test
informieren, dass Test
ein Feld Test.foo
haben und noch besser, lassen Sie es wissen, dass foo
erwartet wird, eine Zeichenfolge zu sein?
Um dies klarzustellen, sollten Sie in Betracht ziehen, die Einstellung von Feldern von Example
auf Test
nicht zu delegieren.
Der nächstgelegene ich bekommen habe, ist die @ivar
von Epydoc, aber ich kann es nicht
AFAIK, können Sie nicht. Wenn Sie die Mitglieder eines Objekts dynamisch definieren, müssen Sie Hinweise vergessen. Sie könnten Klassenattribute für "Test" definieren, die von Instanzattributen "beschattet" werden, aber es ist den Preis nicht wert. Lebe einfach damit. – bgusach
* Seufz *, naja, aber danke für die Antwort. – deinonychusaur
Ja schade, aber Pycharm müsste sehr schlau sein, um den Code zu verstehen und Ihnen Hinweise zu geben. In vielen Fällen vermeide ich "dynamischen" Code zugunsten von "manuell eingegebenem" Code, nur um ein wenig mehr Sicherheit zu haben und die Anmerkungen auch zu genießen. Am Ende ist es ein generelles Problem von dynamisch typisierten Sprachen ... IDEs können nicht zu viel tun. – bgusach