>>12333393On the topic of large projects: It certainly is possible; the issue for me is that for every autist who adheres to those principles, there are 3 Pajeets who don't know what the fuck they're doing and shit up the codebase. Python makes it easy to get away with crap like that. And even if your code is nicely maintainable, chances are you're
a) sacrificing performance if you implement everything in pure Python,
b) getting gigabytes worth of dependencies and if the client system's setup slightly varies you're in for a fun time,
c) shipping out HUMONGOUS packages that include all dependencies and the full environment needed to run your program, or
d) all of the above.
The companies you mentioned get away with it because they control the hardware the code runs on; the performance-critical stuff is either stuff that Python can do relatively quickly by its very design, or implemented in other languages (--> dependencies, potentially platform-specific); or the code simply isn't performance-critical. I'm not saying Python is unusable for ALL large projects, I'm just saying that it might not be the best solution for all projects.
Regarding the OOP stuff, I was indeed specifically talking about data protection. _ and __ prefixes (and the internal renaming that Python does) are no substitute for proper member visibility.
>write multi-threaded program>retarded fucker is tasked with adding XYZ functionality>needs to access "private" field from outside the class>instead of adding thread-safe access methods, he figures he'll just access _classname__privateField>months later, spend days investigating race conditions and corrupted dataAgain, it's not a problem as long as you know what you're doing. But not everyone does, and in large projects the chances of getting some retard in the team increase drastically.
Does Python support multiple inheritance, interfaces and generics? I haven't used it in a while.