Advertisement
VikkaLorel

Person

Jan 14th, 2019
801
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.98 KB | None | 0 0
  1. from warnings import warn
  2.  
  3.  
  4. class Person:
  5.     """
  6.    a person
  7.    """
  8.     _ssn: int
  9.     _name: str
  10.     _age: int
  11.  
  12.     def __init__(self, ssn: int, **kwargs) -> None:
  13.         """
  14.        Create an instance of Person
  15.  
  16.        :param ssn: social security number
  17.        :type ssn: int
  18.        :key name: person's first name, should be a str
  19.        :key age: person's age in years, rounded down, should be an int
  20.        :return: __init__ should return None
  21.        :rtype: None
  22.        """
  23.         self._ssn = ssn
  24.         if 'name' in kwargs:
  25.             if type(kwargs['name']) is str:
  26.                 self._name = kwargs['name']
  27.             else:
  28.                 raise TypeError("__init__() kwargs['name']: Got {} but expected \
  29.                type is str".format(type(kwargs["name"]).__name__))
  30.         else:
  31.             warn('This person have a default name', Warning)
  32.             self._name = 'Smith'
  33.  
  34.         if 'age' in kwargs:
  35.             if type(kwargs['age']) is int:
  36.                 self._age = kwargs['age']
  37.             else:
  38.                 raise TypeError("__init__() kwargs['age']: Got {} but expected \
  39.                type is str".format(type(kwargs["age"]).__name__))
  40.         else:
  41.             warn('This person have a default age', Warning)
  42.             self._age = 21
  43.  
  44.     @property
  45.     def name(self) -> str:
  46.         return self._name
  47.  
  48.     @name.setter
  49.     def name(self, value: str) -> None:
  50.         if type(value) is not str:
  51.             raise TypeError('name.setter(): got {} but expected type is str'
  52.                             .format(type(value).__name__))
  53.         else:
  54.             self._name = value
  55.  
  56.     @property
  57.     def age(self) -> int:
  58.         return self._age
  59.  
  60.     @age.setter
  61.     def age(self, value) -> None:
  62.         if type(value) is not int:
  63.             raise TypeError('age.setter(): got {} but expected type is int'
  64.                             .format(type(value).__name__))
  65.         else:
  66.             self._age = value
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement