Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #64039
| References | <CAOF-KfigMrCKz+O9_o6C+PBk6OB8hjOkUTWPW9PLfpobYO_kTw@mail.gmail.com> <20140116012542.GA5065@cskk.homeip.net> |
|---|---|
| Date | 2014-01-16 12:46 +1100 |
| Subject | Re: data validation when creating an object |
| From | Chris Angelico <rosuav@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.5561.1389836816.18130.python-list@python.org> (permalink) |
On Thu, Jan 16, 2014 at 12:25 PM, Cameron Simpson <cs@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:
>>> size = "test.txt"
>>> size < 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < int()
Yet another advantage of Py3 :)
ChrisA
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: data validation when creating an object Chris Angelico <rosuav@gmail.com> - 2014-01-16 12:46 +1100
csiph-web