getFoo1() vs. class.foo1

Steven Taschuk staschuk at telusplanet.net
Fri Jun 13 21:32:15 EDT 2003


Quoth Manuel:
  [...]
> class VerySimple:
>         foo1 = 1
>         foo2 = 2
>         foo3 = 3
> etc...
> 
> Any professional developers tell me that
> I must use get and set (to private variable)
> method instead.
  [...]

Java programmers often do this, for two reasons that I know of:

1. Java encourages you -- by design -- to hide your data from
other code, for fear that the other code will break you.  (Python
encourages a more trusting, friendly attitude.)

2. If you use separate get/set methods even for simple data, then
you don't have to worry about API compatibility when the day comes
that you want to make access to that data more complicated -- say,
computing it on the fly instead of storing it, or logging all
accesses, or whatever.  (In Python this is no longer a big
concern, since you can change a simple attribute into a property,
leaving your API unchanged.)

In short: don't do this in Python.  In Java it's okay.

-- 
Steven Taschuk                staschuk at telusplanet.net
"I tried to be pleasant and accommodating, but my head
 began to hurt from his banality."   -- _Seven_ (1996)





More information about the Python-list mailing list