style query: function attributes for return codes?
Steven Bethard
steven.bethard at gmail.com
Fri Dec 10 12:54:08 EST 2004
Robert Kern wrote:
> Steven Bethard wrote:
>
>> Sorry, I also meant to add that the other obvious way of dealing with
>> this kind of thing is to make the results keyword parameters:
>>
>> def get_connection(GOOD=1, BAD_AUTH=2, NO_SERVER=3):
>> if tcp_conn():
>> if server_allows_conn():
>> return GOOD
>> else:
>> return BAD_AUTH
>> else:
>> return NO_SERVER
>>
>> This has the benefit that if your user wants different return values
>> they can specify them, but the disadvantage that someone improperly
>> calling the function with more than 0 parameters will get, instead of
>> an error message, a strange return value.
>
>
> Another disadvantage is that one must compare the return value by value
> and not by name. That is, I cannot do something like this:
>
> code = get_connection()
> if code == NO_SERVER:
> ...
Good point. The class-type implementation does allow you to do this:
>>> class get_connection(object):
... GOOD = 1
... BAD_AUTH = 2
... NO_SERVER = 3
... def __new__(cls):
... if tcp_conn():
... if server_allows_conn():
... return cls.GOOD
... else:
... return cls.BAD_AUTH
... else:
... return cls.NO_SERVER
...
>>> get_connection.GOOD
1
>>> get_connection.BAD_AUTH
2
>>> get_connection.NO_SERVER
3
Steve
More information about the Python-list
mailing list