check type when assignment

Tal Einat taleinat at gmail.com
Wed Jul 12 11:39:01 EDT 2006


pipehappy <pipehappy <at> gmail.com> writes:

> 
> Hello everyone:
> 
> Is there a way to check the type when do assignment?
> 
> if I write:
> ab = bc
> and want to make sure the return value of isinstance(bc, klass) is True
> or I will raise
> a exception.
> 
> Any suggestion?
> 

1. Check your condition before the assignment: (IMO one-liners are over-rated)

if not isinstance(bc, klass):
    raise TypeError # or do whatever else is appropriate
ab = bc

2. If you really insist on doing this in a single statement (in the assignment
itself), write a function for it:

def assert_type(obj, klass):
    if not isinstance(bc, klass):
        raise TypeError
    return obj
ab = assert_type(bc, klass)

Or to be more generic:

def assert_return(obj, func):
    assert func(obj)
    return obj

ab = assert_return(bc, lambda obj:isinstance(obj, klass))

- Tal




More information about the Python-list mailing list