Implicit optional is deprecated. Explicitly use self.foo: int | None = None
Python
Welcome to the Python community on the programming.dev Lemmy instance!
π Events
Past
November 2023
- PyCon Ireland 2023, 11-12th
- PyData Tel Aviv 2023 14th
October 2023
- PyConES Canarias 2023, 6-8th
- DjangoCon US 2023, 16-20th (!django π¬)
July 2023
- PyDelhi Meetup, 2nd
- PyCon Israel, 4-5th
- DFW Pythoneers, 6th
- Django Girls Abraka, 6-7th
- SciPy 2023 10-16th, Austin
- IndyPy, 11th
- Leipzig Python User Group, 11th
- Austin Python, 12th
- EuroPython 2023, 17-23rd
- Austin Python: Evening of Coding, 18th
- PyHEP.dev 2023 - "Python in HEP" Developer's Workshop, 25th
August 2023
- PyLadies Dublin, 15th
- EuroSciPy 2023, 14-18th
September 2023
- PyData Amsterdam, 14-16th
- PyCon UK, 22nd - 25th
π Python project:
- Python
- Documentation
- News & Blog
- Python Planet blog aggregator
π Python Community:
- #python IRC for general questions
- #python-dev IRC for CPython developers
- PySlackers Slack channel
- Python Discord server
- Python Weekly newsletters
- Mailing lists
- Forum
β¨ Python Ecosystem:
π Fediverse
Communities
- #python on Mastodon
- c/django on programming.dev
- c/pythorhead on lemmy.dbzer0.com
Projects
- PythΓΆrhead: a Python library for interacting with Lemmy
- Plemmy: a Python package for accessing the Lemmy API
- pylemmy pylemmy enables simple access to Lemmy's API with Python
- mastodon.py, a Python wrapper for the Mastodon API
Feeds
Thanks! Good to know.
That seems like that's going to give you an error in most type checkers. You said it's always an int and then immediate made that a lie and made it None instead.
Why are you trying to do this?
I'm initializing variables that would be used later in the class in different functions. I wasn't sure if I needed to do a var: <type> | None = None or if just setting it to None was fine.
Why not require values in the constructor?
This is an example. For my actual use case, they would be private vars that would be set by class functions instead of passed to the constructor.
yes, bad practice; yes, against PEP
As can surmise from my handle, i'm even stricter!
Use Union, not | or Optional where ever possible.
Optional does not allow for future expansion of the typing.
Optional[int] and then want to add float, so have to rewrite it Union[int, float, None]
So write it with Union to begin with.
Went thru my | stage like everyone else, but grew out of it.
TypeAlias insists on Union, not |
So Union everywhere ftw
Why? If there is a possibility of making a mistake, Murphy's law dictates that it'll occur every damn time. Enough already! KISS principle is in effect.
While we are on da topic, always use string notation! My experience, this was really non-obvious.
With both cast and typing. With cast, can let builtin types, like str or int, be passed in without the string notation.
This reduces the typing imports bleeding into your runtime code modules and tests.