| Post Reply | RetroFed Forum Forum Index » Python |
| Author | Message | ||
|---|---|---|---|
AstroLightz
lemmy.world
AstroLightz@lemmy.worldJoined: 2023-06-29 |
For example:
Is this bad practice/go against PEP guidelines or is it fine? |
||
| 23 Original | |||
|
jtrek
startrek.website
jtrek@startrek.website Joined: 2026-02-22 |
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? |
||
| 7 | |||
|
sbv
sh.itjust.works
sbv@sh.itjust.works Joined: 2023-06-11 |
Why not require values in the constructor? |
||
| 3 | |||
|
unalivejoy
lemmy.zip
joyjoy@lemmy.zip Joined: 2025-06-05 |
Implicit optional is deprecated. Explicitly use |
||
| 20 | |||
AstroLightz
lemmy.world
AstroLightz@lemmy.worldJoined: 2023-06-29 |
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. |
||
| 2 | |||
AstroLightz
lemmy.world
AstroLightz@lemmy.worldJoined: 2023-06-29 |
Implicit optional is deprecated. Explicitly use self.foo: int | None = None
Thanks! Good to know. |
||
| 4 | |||
AstroLightz
lemmy.world
AstroLightz@lemmy.worldJoined: 2023-06-29 |
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 |
||
| 2 | |||
|
solrize
lemmy.ml
solrize@lemmy.ml Joined: 2023-06-22 |
If it can be None then the type is Optional[int] or Optional[str] as the case may be. Or I guess now int | None etc. I'm used to older versions of mypy so idk if they support that alternate syntax. Optional[int] would seem to be preferable but it turns out it's not really an option type. Like Optional[None] being None is ambiguous. |
||
| 1 | |||
|
solrize
lemmy.ml
solrize@lemmy.ml Joined: 2023-06-22 |
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.
I'm going to say initializing them to None and updating them later is a code smell. If you can do so, make them non-optional and always initialize them to actual meaningful values. |
||
| 3 | |||
|
jtrek
startrek.website
jtrek@startrek.website Joined: 2026-02-22 |
I'm going to say initializing them to None and updating them later is a code smell. If you can do so, make them non-optional and always initialize them to actual meaningful values.
Yeah, if you initialize them to None then for the entire rest of the class you're going to have to account for the possibility that they're None. If it's unavoidable that they might be None, you should type it as such. If you type them as like |
||
| 2 | |||
|
solrize
lemmy.ml
solrize@lemmy.ml Joined: 2023-06-22 |
Yeah, if you initialize them to None then for the entire rest of the class you're going to have to account for the possibility that they're None. If it's unavoidable that they might be None, you should type it as such. If you type them as like str | None then later when you do like return foo[0] it will warn you that you can't do that with None.
foo[0] is also unsafe unless foo is known to be nonempty, ofc. |
||
| 1 | |||
|
jtrek
startrek.website
jtrek@startrek.website Joined: 2026-02-22 |
foo[0] is also unsafe unless foo is known to be nonempty, ofc.
Technically correct , the best kind of correct.
|
||
| 1 | |||
|
Vulwsztyn
programming.dev
Vulwsztyn@programming.dev Joined: 2023-11-12 |
yes, bad practice; yes, against PEP |
||
| 1 | |||
| Post Reply |
Back to top |