it's me wrote:
Okay, Nick, I didn't know you can pass a "Class" rather then an instance.  I
have to chew on what your example does.

But no, I want to pass an instance of a Class.  But how do I know that the
calling routine *did* pass me a class - pardon me: an instance of a Class?

You really need to fully digest the difference between classes and instances. In Python, both classes and instances (of classes) are objects/values (just like functions and modules). You can bind (store) *classes* in variables, like so

>>> import httplib
>>> x=httplib.HTTP
>>> inspect.isclass(x)
True
>>> x=3
>>> inspect.isclass(x)
False

For many things, it is not obvious that they are classes. For example,
consider str and repr:

>>> inspect.isclass(repr)
False
>>> inspect.isclass(str)
True

Actually, in older Python versions, str was not always a class (a type).
It used to be a function, but now is a class.

The real purpose of why you have *inspect*.isclass is for inspecting.
For example, assume I wanted to display the contents of module httplib.
I would need to find out what the things in httplib are, and I do this
with

>>> for x in dir(httplib):
...   print x,
...   x = getattr(httplib, x)
...   if inspect.isclass(x):print "class"
...   elif inspect.isfunction(x):print "function"
...   elif inspect.ismodule(x):print "module"
...   else: print "something else"
...
BadStatusLine class
CannotSendHeader class
CannotSendRequest class
FakeSocket class
HTTP class
HTTPConnection class
HTTPException class
HTTPMessage class
HTTPResponse class
HTTPS class
HTTPSConnection class
HTTPS_PORT something else
HTTP_PORT something else
ImproperConnectionState class
IncompleteRead class
InvalidURL class
LineAndFileWrapper class
NotConnected class
ResponseNotReady class
SSLFile class
SharedSocket class
SharedSocketClient class
StringIO something else
UnimplementedFileMode class
UnknownProtocol class
UnknownTransferEncoding class
_CS_IDLE something else
_CS_REQ_SENT something else
_CS_REQ_STARTED something else
_UNKNOWN something else
__all__ something else
__builtins__ something else
__doc__ something else
__file__ something else
__name__ something else
errno module
error class
mimetools module
socket module
test function
urlsplit function

Regards,
Martin
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to