<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <style type="text/css">body p { margin-bottom: 0cm; margin-top: 0pt; } </style>
  </head>
  <body bidimailui-detected-decoding-type="latin-charset"
    bgcolor="#FFFFFF" text="#000000">
    I just want to point out that in Java's case, it's not a matter of
    the language itself, but of conventions (the JavaBean standard) that
    grew on top of it. Java getters and setters really are 100% regular
    method calls, just with names that some mechanisms decide to
    introspect and use, sometimes in the terrible ways Sheila describes.
    :)<br>
    <br>
    In my talk about Genie/Vala (postponed to next month) you'll that
    getters and setters have a lot more mechanisms associated with them,
    and moreover have special limitations in terms of passing ownership
    of values. As it should be, really! A property should be *of* an
    object, and if you want to extract or inject data there are better
    paradigms.<br>
    <br>
    -Tal<br>
    <br>
    <div class="moz-cite-prefix">On 12/05/2012 10:34 AM, sheila miguez
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAHCs_raf1HL-x+Hsbbiw0dmK8TVf3bqO2dRgWHMH72CJ5YKRMA@mail.gmail.com"
      type="cite">
      <pre wrap="">GRAR sometimes things are so annoying. why must we suffer so?

This setter/getter stuff with cross cutting concerns or business
logic, or what-have-you. ARG

In java, sometimes I handle the validation stuff by making pojos with
no setters, but they have builders. The builders provide the
validation logic. In the past, when people have put logic in POJO
getters and setters for things that get serialized and sent across the
wire to a client, I've had reactions like being ape-shit insane due to
the annoyances that can arise. I don't know, I guess you can move the
ape-shit annoyedness by moving the logic to different parts and then
other painful things will happen. With java, I have reacted to painful
things by using god-awful builders. to avoid god-awful other things. I
bet these are all smells happening due to design but also probably due
to the language. not just the design. the design accrues to the
language. HULK SMASH



On Wed, Dec 5, 2012 at 10:22 AM, Philip Doctor <a class="moz-txt-link-rfc2396E" href="mailto:diomedestydeus@gmail.com"><diomedestydeus@gmail.com></a> wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">Tim,
I agree that they get misused a lot (especially in C#) but I see it's very
common to put validation in a set in c#.  So maybe syntactically it looks
like you're just setting myCar.Speed to 60, but in myCar it's validating
that Speed is not negative and it's less than MaxSpeed, etc etc.  I actually
see this happening more and more in C# with data attributes in msft MVC.
They have a public get/set and then an annotation that indicates things like
not negative or required, etc etc.  I guess the caveat being that without a
return value, your only way to really communicate that a value is out of
bounds is with an exception throw, so your developers need to be comfortable
with that kind of getter/setter feedback.

My only point in this ramble being that public get/set, while often cargo
culted in and bad style, can actually still be quite useful in c# and a
little bit better than a public variable :)




On Wed, Dec 5, 2012 at 10:15 AM, Brian Curtin <a class="moz-txt-link-rfc2396E" href="mailto:brian@python.org"><brian@python.org></a> wrote:
</pre>
        <blockquote type="cite">
          <pre wrap="">
On Wed, Dec 5, 2012 at 9:38 AM, Malcolm Newsome
<a class="moz-txt-link-rfc2396E" href="mailto:malcolm.newsome@gmail.com"><malcolm.newsome@gmail.com></a> wrote:
</pre>
          <blockquote type="cite">
            <pre wrap="">Additionally, a separate, but perhaps related question is that I have
not
seen public/private classes in Python.  How might this factor into the
whole
accessor scenario?  (Or, am I trying to relate two topics that have
nothing
to do with each other?)
</pre>
          </blockquote>
          <pre wrap="">
There's no notion of private classes, but you could create private
attributes on a class using a leading double underscore. I and most
others don't recommend doing this.

class MyClass:
    def __private(self):
        ...

Python uses "name mangling" to hide the __private method, but nothing
is stopping you from unmangling the name and just calling mangled
names.

Check out this first paragraph for more information:
<a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/Python_syntax_and_semantics#Objects">http://en.wikipedia.org/wiki/Python_syntax_and_semantics#Objects</a>
_______________________________________________
Chicago mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Chicago@python.org">Chicago@python.org</a>
<a class="moz-txt-link-freetext" href="http://mail.python.org/mailman/listinfo/chicago">http://mail.python.org/mailman/listinfo/chicago</a>
</pre>
        </blockquote>
        <pre wrap="">


_______________________________________________
Chicago mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Chicago@python.org">Chicago@python.org</a>
<a class="moz-txt-link-freetext" href="http://mail.python.org/mailman/listinfo/chicago">http://mail.python.org/mailman/listinfo/chicago</a>

</pre>
      </blockquote>
      <pre wrap="">


</pre>
    </blockquote>
    <br>
  </body>
</html>