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?

  • AstroLightzOP
    link
    fedilink
    arrow-up
    2
    ·
    6 days ago

    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.

    • solrize@lemmy.ml
      link
      fedilink
      arrow-up
      5
      ·
      6 days ago

      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.

      • jtrek@startrek.website
        link
        fedilink
        arrow-up
        5
        ·
        5 days ago

        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.