En Fri, 16 Mar 2007 22:05:05 -0300, Paulo da Silva
<[EMAIL PROTECTED]> escribió:
> When debugging, I found this is wrong!!!
> Would someone please clarify what do I have to return from
> __new__?
Try this. I used a classmethod for load, it may be easier to subclass.
class C(object):
def __new__(cls, filename=None, foo=None, bar=None):
if filename is not None:
return cls.load(filename)
inst = super(C, cls).__new__(cls)
inst.foo = foo
inst.bar = bar
return inst
@classmethod
def load(cls, filename):
inst = super(C, cls).__new__(cls)
inst.foo = "some foo loaded from "+filename
inst.bar = "some bar loaded from "+filename
return inst
class D(C):
@classmethod
def load(cls, filename):
inst = super(D, cls).__new__(cls)
inst.foo = "D foo loaded from "+filename
inst.bar = "D bar loaded from "+filename
return inst
c1 = C(foo=1, bar=2)
print "c1=", c1
print "c1.foo=", c1.foo
print "c1.bar=", c1.bar
c2 = C(filename="xxx.txt")
print "c2=", c2
print "c2.foo=", c2.foo
print "c2.bar=", c2.bar
d1 = D(foo=10, bar=20)
print "d1=", d1
print "d1.foo=", d1.foo
print "d1.bar=", d1.bar
d2 = D(filename="yyy.txt")
print "d2=", d2
print "d2.foo=", d2.foo
print "d2.bar=", d2.bar
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list