data validation when creating an object

Cameron Simpson cs at zip.com.au
Thu Jan 16 01:29:31 EST 2014


On 16Jan2014 12:46, Chris Angelico <rosuav at gmail.com> wrote:
> On Thu, Jan 16, 2014 at 12:25 PM, Cameron Simpson <cs at zip.com.au> wrote:
> > However, I would also have obvious validity checks in __init__
> > itself on the supplied values. Eg:
> >
> >   def __init__(self, size, lifetime):
> >     if size < 1:
> >       raise ValueError("size must be >= 1, received: %r" % (size,))
> >     if lifetime <= 0:
> >       raise ValueError("lifetime must be > 0, received: %r" % (lifetime,))
> >
> > Trivial, fast. Fails early. Note that the exception reports the
> > receive value; very handy for simple errors like passing utterly
> > the wrong thing (eg a filename when you wanted a counter, or something
> > like that).
> 
> With code like this, passing a filename as the size will raise TypeError on Py3:

I thought of this, but had already dispatched my message:-(
I actually thought Py2 would give me a TypeError, but I see it doesn't.
-- 
Cameron Simpson <cs at zip.com.au>

The significant problems we face cannot be solved at the same level of
thinking we were at when we created them.       - Albert Einstein



More information about the Python-list mailing list