Many thanks your explaination cleared up many of the questions I had.
I know think i can understand the purpose, regardless of my opinion, i
do however think that one should be able to assign the value in the
same way it is accessed.
Given your previous example:

> class Counter(object):
>      "A mutable counter."
>      # implementation elided

> class A(object):
>      instance_count = Counter()
>      def __init__(self):
>          self.instance_count.increment()


if you changed
> class A(object):
>      instance_count = Counter()
>      def __init__(self):
>          self.instance_count.increment()

to

> class A(object):
>      instance_count = 0
>      def __init__(self):
>          self.instance_count = self.instance_count + 1

It would not work as planned. I understand all the reasons why this
occurs, but i dont understand why its implemented this way. Because it
acts in a different way than you expect. It seems to me that
self.instance_count should not create a new entry in the __dict__ if a
class variable of that name is already present anywhere in that objects
hierarchy.

Does that make sense?

Again thank you for explaination.

graham

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

Reply via email to