[Python-projects] PyLint: Type inference fails on classmethod
Sylvain Thénault
sylvain.thenault at logilab.fr
Fri Feb 9 09:13:19 CET 2007
On Thursday 08 February à 23:12, Sylvain Thénault wrote:
> On Tuesday 06 February à 19:40, Maarten ter Huurne wrote:
> >
> > Hi,
>
> Hey Maarten,
>
> > When I run PyLint on this program:
> > ===
> > class Super(object):
> > @classmethod
> > def instance(cls):
> > return cls()
> >
> > class Sub(Super):
> > def method(self):
> > print 'method called'
> >
> > Sub.instance().method()
> > ===
> > It prints:
> > ===
> > E1101: 10: Instance of 'Super' has no 'method' member
> > ===
> >
> > The return type of "Sub.instance()" is "Sub", not "Super", so the method call
> > is valid, as you can see when you run this program.
> >
> > So it seems that ASTNG infers the wrong type: "cls" is the class on which the
> > class method is called, which is not necessarily the class in which it is
> > defined.
>
> huum, remember astng inference is dumb ;) I guess it should at least see
> that it may be wrong and return a YES object as well so that pylint
> don't issue a false positive.
>
> I'll add this to the tracker tomorrow, thanks for the report.
http://www.logilab.org/3531
--
Sylvain Thénault LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian: http://www.logilab.fr/formations
Développement logiciel sur mesure: http://www.logilab.fr/services
Python et calcul scientifique: http://www.logilab.fr/science
More information about the Python-Projects
mailing list