1. Use Data Classes To Automatically Generate Special Methods
2. Use Abstract Classes To Define Common Interfaces
3. Separate Class-Level and Instance-Level Attributes
4. Separate Public, Protected and Private Attributes
5. Define Mixin Classes through Multiple Inheritance
6. Use @property Decorator To Control Attributes Precisely
7. Use Class Methods in Classes
8. Use Static Methods in Classes
9. Separate __new__ and __init__: Two Different Python Constructors
10. Use __slots__ for Better Attributes Control