Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #30635 > unrolled thread

Are ABCs an anti-pattern?

Started byDemian Brecht <demianbrecht@gmail.com>
First post2012-10-02 07:23 -0700
Last post2012-10-02 07:23 -0700
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python


Contents

  Are ABCs an anti-pattern? Demian Brecht <demianbrecht@gmail.com> - 2012-10-02 07:23 -0700

#30635 — Are ABCs an anti-pattern?

FromDemian Brecht <demianbrecht@gmail.com>
Date2012-10-02 07:23 -0700
SubjectAre ABCs an anti-pattern?
Message-ID<mailman.1726.1349187795.27098.python-list@python.org>
I don't use them anymore, but I'm curious about others opinions on this 
list...

The more time I spend in Python, discovering what "Pythonic" code is and 
such, it seems that I throw away much in terms of academic learnings as 
far as "OOP correctness" goes. In doing so, I find that, in general, 
overall LOC (yes, I'm aware that this is a poor metric to judge anything 
on), readability and overall quality of code seems to go up. Yes, you 
give the user much more rope to hang themselves with making the general 
assumption that the user knows what they're doing, but we're all 
consenting adults here after all, right? ;)

As an example, I initially had an OAuth 2.0 client library that was 
roughly 450 LOC (using ABCs, adapter patterns for the various flows, 
etc). Dropping this for a more "Pythonic" (at least, what my 
interpretation of Pythonic code is) brought the entire library down to 
55 LOC. Having said that, the decline in LOC and overall grok-ability 
wasn't entirely due to moving away from ABCs and dropping the use of 
adapters, but it did have quite a bit to do with it).

As such, I see ABCs as somewhat of an anti-pattern in the Python world. 
The concept is obviously essential in non-duck-typed language using 
strict OOP, but does it *really* belong in Python?

-- 
Demian Brecht
@demianbrecht
http://demianbrecht.github.com

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web