Heard about __new__, the constructor in Python? You can basically forget about it. It’s for advanced, unusual cases. Just use __init__! It runs automatically on every new instance. __init__ is for assigning attributes to self (what other languages call “instance variables”).
Using uv? The Python version is stored in .python-version. Change it with But: uv gives an error: 3.13 is incompatible with requires-python in pyproject.toml of ‘>=3.14.’
Want to get the unique values from a Python list? Use a set! Of course, list elements must be hashable!
Sorting a Python dict by value? Instead of: Use itemgetter. It’s cleaner AND ~25% faster: Sort by value, then by key:
Write to a file in Python with open(filename, ‘w’). What if filename already exists? Its contents are gone. (I hope you have backups!) Instead, try: If filename already exists, ‘x’ raises an exception. For new files, ‘x’ and ‘w’ are the same.
Use parentheses to split long Python code across lines: But with parentheses, Python sees it as one line: Or in comprehensions…