[Python-Dev] Odd new-style class new behavior (original) (raw)

Michael Hudson mwh@python.net
30 Mar 2002 18:33:12 +0000


Guido van Rossum <guido@python.org> writes:

> On 30 Mar 2002, Michael Hudson wrote: > > Kevin Jacobs <jacobs@penguin.theopalgroup.com> writes: > > > Suppose I define: > > > > > > class Foo(object): > > > def new(cls): > > > return 1 > > > > > > class Bar(object): > > > def new(cls): > > > return [1,2,3] > > > > > > Python 2.2 returns: > > > print Foo() > > > > 1 > > > print Bar() > > > > [] > > > > > > I would expect that Bar() should return [1,2,3]. Am I running into > > > some clever undocumented feature or a bug? > > > > Is tpinit being called on the returned list?

Correct.

Goody. I always like it when my wild guesses turn out to be accurate :)

[...]

Correct behavior is not to return a different type unless you know what its init does.

d = {1:1} d.init() d {1: 1} l = [1] l.init() l []

This is at least a little odd, I'd have said. Is this just a fluke of implementation?

It's not like I really care, though.

Cheers, M.

-- In the 1950s and 60s there was a regular brain drain of young Australians from the cities to London, but it was because of money, culture and opportunity, not spiders. -- Al Grant, ucam.chat, from Owen Dunn's review of the year