For example:
class FooBar:
def __init__(self):
self.a: int = None
self.foo: str = None
Is this bad practice/go against PEP guidelines or is it fine?
For example:
class FooBar:
def __init__(self):
self.a: int = None
self.foo: str = None
Is this bad practice/go against PEP guidelines or is it fine?
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 = Noneor 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.
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 | Nonethen later when you do likereturn 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.
Technically correct , the best kind of correct.
foo.lower()would have been a better example.