Maxim Khitrov wrote:

Perhaps a different example would help explain what I'm trying to do:

class Case1(object):
        def __init__(self):
                self.count = 0
                self.list  = []

        def inc(self):
                self.count += 1
                self.list.append(self.count)

        def val(self):
                return (self.count, self.list)

OK, so .count and .list (BAD IDEA TO USE BUILT-IN NAME) are not constants, as you previously implied.


class Case2(object):
        count = 0
        list  = []

        def inc(self):
                self.count += 1
                self.list.append(self.count)

        def val(self):
                return (self.count, self.list)

for i in xrange(10):

You really only need one value of i for a test. But you need multiple instances of each class

        c1 = Case1()
        c2 = Case2()

        c1a, c1b = Case1(), Case1()
        c2a, c2b = Case2(), Case2()

        for j in xrange(i):
                c1.inc()
                c2.inc()

                c1a.inc(), c1b.inc()
                c2a.inc(), c2b,inc()

        v1, l1 = c1.val()
        v2, l2 = c2.val()

        print(c1a.val(), c1b.val(), c2a.val(), c2b.val())

        print v1 == v2, l1 == l2

        # just look as all four tuples

The only difference between Case1 and Case2 classes is where the count
and list attributes are defined.

and that 'only difference makes a major difference. Make two instances of each class and you will see how.

Terry Jan Reedy


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

Reply via email to