Optional parameter in constructor - how to check type of import variable content

Hi there,

I do have the following class for learning purposes since I am new to Python:

 class human:
    "Represents a human being"
    _lv_firstname: str
    _lv_lastname: str
    _lv_fullname: str
    _lv_nickname: str
    _lv_birthday: datetime.date
    _lv_age: dateutil.relativedelta.relativedelta
    # Constructor
    def __init__(self, iv_firstname: str, iv_lastname: str, iv_birthday: datetime.date, iv_nickname: Optional[str] = None):
        "Constructor of a human being"
        self._lv_firstname  = iv_firstname
        self._lv_lastname = iv_lastname
        self._lv_birthday = iv_birthday
        self._lv_age = dateutil.relativedelta.relativedelta( datetime.date.today(), self._lv_birthday )
        if iv_nickname is str:
            self._lv_nickname = iv_nickname
        self._lv_fullname = iv_firstname + ' ' + iv_lastname
    # END Constructor.

When instantiating this class, I pass in a string for ‘iv_nickname’:
_lo_human = busobj.human.human( 'myfirstname', 'mylastname', datetime.date( 1990, 11, 13), 'mynickname' )

However, when debugging, the if-condition for ‘iv_nickname’ is not met in the constructor of class ‘human’ and I do not understand why.
Any help would be appreciated.
Thank you.

iv_nickname is str is asking whether iv_nickname refers to the exact same object as str.

That’s not what you want.

What you want to know is whether iv_nickname is an instance of str.

What you want is isinstance(iv_nickname, str).

1 Like

Awesome, thank you so much. It works and I learned something new :slight_smile: