On Sat, 17 Apr 2010 19:55:44 +0400, Alexander wrote: > Ok, I'll try to explain on the following example. Let's consider class > MyClass that holds one string and concatenate it with other not defined > in this class: [...] > and with working application: > > a = MyClass() > a.set('key1') > > b1 = a.new('value1') > b2 = a.new('value2') > > print b1, "," ,b2 # give 'key1 value1 , key1 value2' > > a.set('key2') > > print b1, ",", b2 # give 'key2 value1 , key2 value2'
Looking at your design, I can't see any reason for SubClass to be a subclass of MyClass. It doesn't inherit any behaviour, and the constructor takes completely different arguments. Why make it a Subclass? MyClass is dangerous: creating an instance doesn't fully initialise the instance, it leaves it in a half-initialised state that can cause exceptions from simple operations like: instance = MyClass() print instance This is very bad design. Redesigning the pair of classes, I get this: class MyClass(object): def __init__(self, key): self.key = key # No obvious need to make key a private attribute. def new(self, value): return AnotherClass(self, value) class AnotherClass(object): def __init__(self, obj, value): self.obj = obj self.value = value def __str__(self): return "%s %s" % (self.obj.key, self.value) which gives the behaviour you ask for: >>> a = MyClass('key1') >>> b1 = a.new('value1') >>> b2 = a.new('value2') >>> print b1, "," ,b2 key1 value1 , key1 value2 >>> >>> a.key = 'key2' >>> print b1, "," ,b2 key2 value1 , key2 value2 -- Steven -- http://mail.python.org/mailman/listinfo/python-list