On 1/4/11 07:23 , Mike Graham wrote:
On Mon, Jan 3, 2011 at 4:09 PM, K. Richard Pixley <rich@noir.com> wrote:
Essentially the permutation are, I think: {'unadorned'|abc.abstract}{'normal'|static|class}{method|property|non-callable attribute}.

At the abstract level, a property and a normal, non-callable attribute are the same thing.
They are from the instantiation perspective but not from the subclassing perspective.  From the subclassing perspective, it's the difference between:

class Foo(object):
    def bar(self):


class Foo(object):
    bar = ...

If an abstract property were to be answered by a simple assignment, then the "read-only" trait would be lost.