Path: csiph.com!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.002 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python.': 0.02; 'python,': 0.02; 'init': 0.07; 'useless': 0.09; 'cc:addr:python-list': 0.11; 'python': 0.11; 'ah,': 0.16; 'be:': 0.16; 'charge,': 0.16; 'does,': 0.16; 'inheritance': 0.16; 'ironed': 0.16; 'list):': 0.16; 'ordereddict': 0.16; 'simplicity,': 0.16; 'subclasses': 0.16; 'subject:object': 0.16; 'whatsoever': 0.16; '(not': 0.18; 'trying': 0.19; 'basically': 0.19; "hasn't": 0.19; 'example': 0.22; 'previously': 0.22; 'cc:addr:python.org': 0.22; 'cc:2**0': 0.24; 'header:In-Reply-To:1': 0.27; 'tried': 0.27; 'idea': 0.28; "doesn't": 0.30; 'cool': 0.30; 'raymond': 0.30; 'message- id:@mail.gmail.com': 0.30; 'skip:( 20': 0.30; "i'm": 0.30; '(which': 0.31; 'went': 0.31; 'comments': 0.31; 'that.': 0.31; 'url:wiki': 0.31; 'noted': 0.31; 'class': 0.32; 'subject:the': 0.34; 'advice': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'really': 0.36; 'should': 0.36; 'level': 0.37; 'architecture': 0.38; 'skip:o 20': 0.38; 'fact': 0.38; 'how': 0.40; 'skip:u 10': 0.60; 'most': 0.60; 'show': 0.63; 'hear': 0.63; 'more': 0.64; 'to:addr:gmail.com': 0.65; 'here': 0.66; 'article,': 0.84; 'proposal:': 0.84; 'washington': 0.93 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=5kBq3d6vFQuUK7CelSvw9KkwHQny3OyYO+ypA3rJLe8=; b=UXXEo+OvRAo/MTeWqBTHaGS+tLpbmNS+ehCqpGuCeQ0cLLi0t5Y28jUFbPhMVN+/bR f7OuW3sBbywf1ie09BE2oPvsML5IgQ4plbSTb0+yUCq7Uz+8LfGpoDmjQ8t6JRcZS1sR 9FTu4iO3/r4vQrviyXPenf/bL4j/F2KfCGK7AqGdLBCOFVv9EFBTUahtAYlsYL83Gga0 RBQTxoOWSmLUpjgQuNOqaFByCi8ccV6ZxB83cpWqC/4okWILSWn0okFyug4/JU1HrTN/ p8sxJdUbRT2bnQ3DwUMBTf0CC2GQ/Dk2D3lVZrbGTs98dZmUZMRVD0bk1JG9qhcUE8nj s9yw== MIME-Version: 1.0 X-Received: by 10.180.205.200 with SMTP id li8mr695647wic.15.1372197508831; Tue, 25 Jun 2013 14:58:28 -0700 (PDT) In-Reply-To: References: <15ba0011-bbf1-42f7-b3ea-1c1d4b70e56b@googlegroups.com> <51c66962$0$29999$c3e8da3$5496439d@news.astraweb.com> <20130623133546.GA2308@capricorn> <51c723b4$0$29999$c3e8da3$5496439d@news.astraweb.com> <51C74D6E.6030200@rece.vub.ac.be> Date: Tue, 25 Jun 2013 14:58:28 -0700 Subject: Re: What is the semantics meaning of 'object'? From: Mark Janssen To: Ian Kelly Content-Type: text/plain; charset=ISO-8859-1 Cc: Python X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 34 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1372197516 news.xs4all.nl 16003 [2001:888:2000:d::a6]:39889 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:49191 > This bothers me as well. If you look at Raymond Hettinger's "super() > considered super" article, he includes the (correct) advice that > super() needs to be used at every level of the call chain. At the end > of the article, he offers this example to show how "easy" multiple > inheritance can be: > [...] > oc = OrderedCounter('abracadabra') > > Which is pretty cool in its simplicity, but here's the rub (which I > have previously noted on this list): OrderedDict doesn't use super. > Counter does, but not cooperatively; it just calls super().__init__() > with no arguments. So the fact that this example works at all is > basically luck. Ah, and here we see the weakness in the object architecture that has evolved in the past decade (not just in Python, note). It hasn't really ironed out what end is what. Here's a proposal: the highest, most "parental", most general object should be in charge, not subclasses calling specific parent's init methods (Parent.__init__(myparams)), etc. -- ***THIS IS WHERE WE WENT WRONG***. After the "type/class unification", python tried to make the most generic, most useless class be the parent of *all of them*, but there's been no use whatsoever in that. It was a good idea in the beginning, so pure as it was, but it has not panned out in practice. Sorry... I'm trying to start a recovery plan at the wikiwikiweb (http://c2.com/cgi/wiki?WikiWikiWeb) and I don't want to hear any more smarmy comments about it. The confusion is deeper than Python. -- MarkJ Tacoma, Washington