Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Alan Evangelista Newsgroups: comp.lang.python Subject: Re: Recommendation for Object-Oriented systems to study Date: Sun, 29 May 2016 15:12:30 -0300 Lines: 32 Message-ID: References: <53b21136-68ce-485c-8ccb-d6d28dace9c5@googlegroups.com> <201605291812.u4TI9dqP037317@mx0a-001b2d01.pphosted.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Trace: news.uni-berlin.de 19PscizHHUh7WG4jdJpMJwlO1smj+APD9Bfc7dMzSyqw== Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.012 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'classes.': 0.07; 'subject:Object': 0.09; 'python': 0.10; 'django': 0.13; 'intermediate': 0.15; 'java,': 0.15; '2016': 0.16; 'creator,': 0.16; 'parts.': 0.16; 'python),': 0.16; 'received:9': 0.16; 'received:ibm.com': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'wrote:': 0.16; 'typing': 0.18; 'programmer': 0.18; 'bonus': 0.20; 'java': 0.22; 'oriented': 0.22; 'simpler': 0.22; 'code,': 0.23; 'bigger': 0.23; 'interfaces': 0.23; 'implemented': 0.24; 'header:In-Reply-To:1': 0.24; 'header:User-Agent:1': 0.26; 'developers': 0.26; 'alan': 0.29; 'concern': 0.29; 'expose': 0.29; 'forces': 0.29; 'idea,': 0.29; 'oop': 0.29; 'allows': 0.30; "i'm": 0.30; 'books': 0.30; 'classes': 0.30; 'creating': 0.30; 'somebody': 0.30; 'source': 0.33; 'common': 0.33; 'designs': 0.33; 'interface,': 0.33; 'covered': 0.34; 'widely': 0.35; 'knowledge': 0.35; 'asking': 0.35; 'but': 0.36; 'list,': 0.36; 'skip:i 20': 0.36; 'instead': 0.36; '(and': 0.36; 'smaller': 0.36; 'to:addr :python-list': 0.36; 'pm,': 0.36; 'subject:: ': 0.37; 'mailing': 0.38; 'subject:-': 0.39; 'to:addr:python.org': 0.40; 'hello,': 0.40; 'some': 0.40; 'header:Message-Id:1': 0.61; 'charset:windows-1252': 0.62; 'more': 0.63; 'interest': 0.64; 'better.': 0.66; 'rare': 0.66; 'action.': 0.84; 'michele': 0.84; 'received:(may be forged)': 0.91; 'inheritance,': 0.93 X-IBM-Helo: d24dlp02.br.ibm.com X-IBM-MailFrom: alanoe@linux.vnet.ibm.com X-IBM-RcptTo: python-list@python.org User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 In-Reply-To: X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16052918-0024-0000-0000-000000CD293F X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16052918-0025-0000-0000-000015314ED7 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-05-29_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_spam_definite policy=outbound score=100 spamscore=100 suspectscore=13 malwarescore=0 phishscore=0 adultscore=0 bulkscore=100 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1605290232 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <201605291812.u4TI9dqP037317@mx0a-001b2d01.pphosted.com> X-Mailman-Original-References: <53b21136-68ce-485c-8ccb-d6d28dace9c5@googlegroups.com> Xref: csiph.com comp.lang.python:109244 On 05/29/2016 02:49 PM, Michele Simionato wrote: > On Sunday, May 29, 2016 at 4:42:17 PM UTC+2, Ankush Thakur wrote: >> Hello, I'm a self-taught programmer who has managed to claw his way out of Python basics and even >> covered the intermediate parts. But I feel I have a ton of theory in my head and would like to >> see some smallish applications in action. More specifically, I'm looking for Object Oriented >> designs that will help me cement my knowledge and expose me to best practices that books never >> cover. I have half a mind to start reading up the Django or Pandas source code, but I don't want >> to overwhelm myself. Can somebody recommend smaller and simpler projects I can learn from? And if >> I can pick the brains of the creator, bonus points! The answer may be a little out of scope because you are asking in a Python mailing list, but if the interest is learning OOP concepts (and not OOP in Python), IMHO Java is better. - Java forces everything to be implemented in OO model (classes) - Java widely uses interfaces and abstract classes. Python has not the concept of interface, as it favors EAFP and duck typing instead of creating base classes which establish contracts. Python also allows multiple inheritance, which is *usually* a bad idea, unless the base classes are interfaces. - In Java, interface/implementation separation is *usually* a bigger concern (eg getters and setters are common in Java code, rare in Python code) . I know that Python developers see Python as more pragmatic, more flexible and quicker/easier/less bureaucratic to develop than Java, so my opinion may be controversial. Regards, Alan Evangelista