Function Verification

Ben Cartwright bencvt at gmail.com
Tue Jun 6 21:35:36 EDT 2006


Ws wrote:
> I'm trying to write up a module that *safely* sets sys.stderr and
> sys.stdout, and am currently having troubles with the function
> verification. I need to assure that the function can indeed be called
> as the Python manual specifies that sys.stdout and sys.stderr should be
> defined (standard file-like objects, only requiring a function named
> "write").
<snip>
> My problem is in verifying the class we're trying to redirect output
> to.
> This is what I have so far:
> def _VerifyOutputStream(fh):
>     if 'write' not in dir(fh):
>         raise AttributeError, "The Output Stream should have a write
> method."
>     if not callable(fh.write):
>         raise TypeError, "The Output Stream's write method is not
> callable."
<snip>
> In the above _VerifyOutputStream function, how would I verify that the
> fh.write method requires only one argument, as the built-in file
> objects do?

Why not just call the function with an empty string?

def _VerifyOutputStream(fh):
    fh.write('')

Note that you don't need to manually check for AttributeError or
TypeError.  Python will do that for you.  It's generally better to act
first and ask forgiveness later.

--Ben




More information about the Python-list mailing list