<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    On 1/4/11 07:23 , Mike Graham wrote:
    <blockquote
      cite="mid:AANLkTingtzdHoip9PMf-OVzqfcYdqzeaBoXaQq4gnD5r@mail.gmail.com"
      type="cite">
      <div class="gmail_quote">On Mon, Jan 3, 2011 at 4:09 PM, K.
        Richard Pixley <span dir="ltr"><<a moz-do-not-send="true"
            href="mailto:rich@noir.com">rich@noir.com</a>></span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <div bgcolor="#ffffff" text="#000000"> Essentially the
            permutation are, I think:
            {'unadorned'|abc.abstract}{'normal'|static|class}{method|property|non-callable

            attribute}.<br>
          </div>
          <br>
        </blockquote>
        <div><br>
          At the abstract level, a property and a normal, non-callable
          attribute are the same thing.</div>
      </div>
    </blockquote>
    They are from the instantiation perspective but not from the
    subclassing perspective.  From the subclassing perspective, it's the
    difference between:<br>
    <br>
    <tt>class Foo(object):<br>
          @property<br>
          def bar(self):<br>
              ...<br>
    </tt><br>
    and:<br>
    <br>
    <tt>class Foo(object):<br>
          bar = ...<br>
    </tt><br>
    If an abstract property were to be answered by a simple assignment,
    then the "read-only" trait would be lost.<br>
    <br>
    --rich<br>
  </body>
</html>