Why would I use inspect.isclass()?

Nicolas Fleury nid_oizo at yahoo.com_removethe_
Thu Dec 30 07:57:11 CET 2004


It's me wrote:
>>I guess another example would be an assert on the type of argument:
>>def foo(someClass):
>>     assert inspect.isclass(someClass)
>>     # rest of code
>>
> But that would always fail!  (I just tried it).

Are you sure you haven't pass an instance instead of a class?  Remember, 
classes are also objects in Python:

 >>> import inspect
 >>> class A: pass
...
 >>> def foo(a): assert inspect.isclass(a)
...
 >>> foo(A)
 >>>

Works fine and makes sense, no?  Of course, if I pass an instance 
instead of a class it would fail:

 >>> myA = A()
 >>> foo(myA)
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
   File "<stdin>", line 1, in foo
AssertionError

Maybe your question is in what situations passing a class can be useful? 
    There's many examples and once you're used to that capability it can 
be powerful.  One simple example could be the generation of 
documentation; since you usually want to doc your classes, not 
instances.  So it would make sense to do something like:

def writeHtmlDoc(file, someClass): ...

Regards,
Nicolas



More information about the Python-list mailing list