Nếu tranh cãi vậy thì đến sang năm cũng không hết cái để nói. Java/C# cũng có điểm không tuân theo nguyên tắc của OOP: primitive data types, nhưng điều đó không làm lập trình viên muốn học OOP dời bỏ Java, cũng không làm khó lập trình viên khi giải 1 bài toán cụ thể. Nếu bạn muốn ngôn ngữ pure-OOP, hay ngôn ngữ OOP truyền thống thì nên chọn Smalltalk ấy.
Public/non-public
method/variable trong Python mình chưa thấy ai nói mù mờ, thậm chí được người mới chuyển từ ngôn ngữ khác vào thấy nó thú vị. Việc thêm keyword public/private/protect chỉ là vấn đề về syntax, để implement không có gì phức tạp, chỉ cần thêm keyword vào Python Interpreter khi tokenize, thêm metadata visibility vào method/variable có flag tương ứng. Mặc dù mình có đơn giản hóa công đoạn phía trên, nhưng cơ bản là không khó với những core-developers của Python. Nhưng nó không phải là những gì Python developers muốn và cần.
self, mixins, metaclass...
trong Python tồn tại mà các ngôn ngữ khác có hoặc không có đều là do thiết kế chủ ý, giải quyết bài toán mà đa số lập trình viên đến với Python gặp phải.
Mình không hiểu ví dụ của bạn liên quan gì tới đa hình?