Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from warnings import warn
- class Person:
- """
- a person
- """
- _ssn: int
- _name: str
- _age: int
- def __init__(self, ssn: int, **kwargs) -> None:
- """
- Create an instance of Person
- :param ssn: social security number
- :type ssn: int
- :key name: person's first name, should be a str
- :key age: person's age in years, rounded down, should be an int
- :return: __init__ should return None
- :rtype: None
- """
- self._ssn = ssn
- if 'name' in kwargs:
- if type(kwargs['name']) is str:
- self._name = kwargs['name']
- else:
- raise TypeError("__init__() kwargs['name']: Got {} but expected \
- type is str".format(type(kwargs["name"]).__name__))
- else:
- warn('This person have a default name', Warning)
- self._name = 'Smith'
- if 'age' in kwargs:
- if type(kwargs['age']) is int:
- self._age = kwargs['age']
- else:
- raise TypeError("__init__() kwargs['age']: Got {} but expected \
- type is str".format(type(kwargs["age"]).__name__))
- else:
- warn('This person have a default age', Warning)
- self._age = 21
- @property
- def name(self) -> str:
- return self._name
- @name.setter
- def name(self, value: str) -> None:
- if type(value) is not str:
- raise TypeError('name.setter(): got {} but expected type is str'
- .format(type(value).__name__))
- else:
- self._name = value
- @property
- def age(self) -> int:
- return self._age
- @age.setter
- def age(self, value) -> None:
- if type(value) is not int:
- raise TypeError('age.setter(): got {} but expected type is int'
- .format(type(value).__name__))
- else:
- self._age = value
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement