issubclass funny business
Fredrik Lundh
effbot at telia.com
Tue Apr 11 12:23:38 EDT 2000
Les Schaffer <godzilla at netmeg.net> wrote:
> but when i need to test whther an object is an instance of a subclass
> of StandardArrayFileScanner:
>
> # make sure std is of the correct type
> if not issubclass(std.__class__, StandardArrayFileScanner):
how about:
if not isinstance(std, StandardArrayFileScanner):
> import cie
> print std.__class__, cie.CIE.__bases__
> raise NotStandardArrayError
>
>
> but it doesnt work, even though std is of type cie.CIE :
>
> (gustav)~/Engineering/dspring/stoplite/matlab/Jue-Data/: python
FileScanner.py
>
> cie.CIE (<class cie.CIE_Standards at 813b320>,) <=== result of print stmt
>
> huh??????
you have two different StandardArrayFileScanner
classes.
when you run FileScanner as a script, it's evaluated
in the __main__ namespace. when you import it, it's
evaluated again, in the FileScanner namespace.
solution: never import the script you use as the main
program.
also see the last section on this page:
http://www.pythonware.com/people/fredrik/fyi/fyi06.htm
</F>
More information about the Python-list
mailing list