On 4/15/05, Michael Spencer <[EMAIL PROTECTED]> wrote:
> > class SillyDecimal(object):
> >    """A silly class to represent an integer from 0 - 99."""
> >    def __init__(self, arg=17):
> >        if isinstance(arg, tuple):
> >            self.tens = arg[0]
> >            self.ones = arg[1]
> It is conventional to indicate 'private' attributes with the _ prefix.
Well, I actually want to expose tens and ones, which is why they are
not private.

> By this standard, you have three 'public' interfaces: number, get/setNumber 
> and
> ones/tens, which is confusing and error-prone.  Moreover, if you are going to
> validate number, it might make more sense to put all the validation logic into
> the setter vs. splitting some into __init__.  So your class could look like:
Of course the toy example would be better coded by changing the
internal representation to number (instead of tens and ones), but then
the point about property validation is lost, as you demonstrate in
your example.

> As for whether it is appropriate to validate the value at all, I think that
> depends on your larger design.
So what do you consider when making this decision, and do these
factors differ between python and C#/Java?

Marcus
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to