spir ☣ wrote:
On Wed, 28 Apr 2010 07:53:06 +0100
Walter Wefft <walterwe...@googlemail.com> wrote:
Steven D'Aprano wrote:
> And for guru-level mastery, replace to call to dict.__init__ with ...
nothing at all, because dict.__init__ doesn't do anything.
>
>
>
(Sorry, should have sent to list).
I don't understand this - it must do something:
class MyDict1(dict):
def __init__(self, *args, **kw):
pass
class MyDict2(dict):
def __init__(self, *args, **kw):
dict.__init__(self, *args, **kw)
d = MyDict1(y=2)
print d
{}
d = MyDict2(y=2)
print d
{'y': 2}
d = MyDict1({'x': 3})
print d
{}
d = MyDict2({'x': 3})
print d
{'x': 3}
Behaviour is different depending on whether you call the superclass
__init__ or not.
?
Hem... this is a rather obscure point (I personly have it wrong each time I
need to subtype builtin types). Maybe you find some enlightenment in the
following code:
===============================
class MyDict0(dict):
pass
class MyDict1(dict):
def __init__(self, *args, **kw):
pass
class MyDict2(dict):
def __init__(self, *args, **kw):
dict.__init__(self, *args, **kw)
===============================
d0 = MyDict0(a=1) ; d1 = MyDict1(a=1) ; d2 = MyDict2(a=1)
print d0,d1,d2 # ==> {'a': 1} {} {'a': 1}
You reiterate my point. To say that dict.__init__ can be omitted in a
subclass's __init__ with no effect, is not a correct statement.
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor