99 Bottles of OOP now available in Python

mattcollins | 253 points

I'd like to mention that despite OOP being in the title, I thought this book had a lot to teach that isn't specific to OOP architecture or OOP languages. Really, I think the star of the show is TDD and refactoring.

For a short intro to Sandi's style and approach, I always recommend this 35min talk: https://youtu.be/OMPfEXIlTVE?si=Ird6t8uDN86T06Y7

Aside from any specifically educational content, as a talk it is fantastic - funny, smart, well put together.

crabmusket | 3 days ago

This is one of my favorite software development books of all time. It's the book that finally offered straight forward guidance and wisdom on how to properly utilize OOP language features.

I'm very happy to see it out for Python!

lastofus | 4 days ago

Maybe this is misguided, but it feels a bit to me (comparing the ruby and js versions for example) that this is using the same code examples in both, and neither are really typical of the sorts of code people in either language community would actually write?

robomc | 3 days ago

> The 2nd Edition contains 3 new chapters and is about 50% longer than the 1st.

I've never really had the problem that I've read an OOP text and felt "this was too short".

SiempreViernes | 3 days ago

Is the book DRM free? Sorry to be this paranoid, but you cannot be sure today.

kubav1 | 3 days ago

While I understand the complaints against OOP, I highly recommend this book to anyone working in an environment where they're working with OOP languages/frameworks. There are plenty of Ruby/Rails shops out there still. At the very least I love the mentality that this book teaches and often recommend Tidy First by Kent Beck at the same time.

inanepenguin | 3 days ago

Previous Discussion

Bottles of OOP - https://news.ycombinator.com/item?id=12129821 - July 2016 (71 comments)

elashri | 4 days ago

I’m gonna buy the book but I prefer composition over OOP. I prefer to have an init that takes some params where those params are fully baked clients of whatever services I need and then the class just uses them as needed. I don’t see a lot of value in having a Python class that might have a few or more classes that it extends where all the functions from all the classes crowd up the classes namespace.

Class Foo.__init__(self, db, blob_storage, secrets_manager, …)

Instead of class Foo(DB, BlobStorer, SecretsMgr)

Etc

gigatexal | 3 days ago

I have seen quite a few digital books at this price point now. Personally I feel it is quite high, but I assume I am in the minority?

dennisy | 3 days ago

HN's automatic title editing strikes again. The title of this submission should presumably be: "99 Bottles of OOP now available in Python".

teraflop | 4 days ago

OOP is an industry of its own which generates a ton of incidental complexity. See "Object-Oriented Programming is Bad" by Brian Wills (https://www.youtube.com/watch?v=QM1iUe6IofM) and most of Rich Hickey's excellent videos, especially his keynote at Rails Conf 2012 where he basically told the Ruby crowd they're doing it wrong (https://www.youtube.com/watch?v=rI8tNMsozo0).

cutler | 3 days ago
[deleted]
| 3 days ago

[flagged]

henning | 4 days ago

Thank you for using snake_case.

That's all I got. Best of luck!

otteromkram | 3 days ago