Advertisement
gruntfutuk

classPerson exercise with random attributes

Mar 23rd, 2018
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.76 KB | None | 0 0
  1. ''' example of class with a few fixed arguments and arbirary
  2.    number of additional keyword/attribute arguments '''
  3.  
  4.  
  5. class Person:
  6.  
  7.     def __init__(self, name, gender='n/a', **kwargs):
  8.         self.name = name
  9.         self.sex = gender
  10.         for key, value in kwargs.items():
  11.             self.__setattr__(key, value)
  12.  
  13.     def __repr__(self):
  14.         return '\n'.join([f'{repr(k)}: {repr(v)}' for k, v in vars(self).items()]) + "\n"
  15.  
  16.  
  17. class Person_str(Person):
  18.  
  19.     @staticmethod
  20.     def checkstr(*args):
  21.         for arg in args:
  22.             if not isinstance(arg, str):
  23.                 raise TypeError(
  24.                     f'Only string attributes are allowed. {arg} is not a string value.')
  25.         return True
  26.  
  27.     def __init__(self, name, gender='n/a', **kwargs):
  28.         if self.checkstr(name, gender, *kwargs.values()):
  29.             super().__init__(name, gender, **kwargs)
  30.  
  31.  
  32. def main():
  33.     ''' example usage of Person class, any number of attributes can be specified '''
  34.  
  35.     # with non-string parameters
  36.     peter = Person("Peter", "male", job="teacher",
  37.                    phone="1234345", height=1.65)
  38.     mary = Person("Mary", "female")
  39.     john = Person("John", "male", hobby="painting",
  40.                   weight=60, favorite_language="python",
  41.                   nationality="USA")
  42.  
  43.     print(peter)
  44.     print(mary)
  45.     print(john)
  46.  
  47.     # with string only parameters allowed
  48.     wendy = Person_str("Wendy", "female", job="teacher",
  49.                        phone="1234345", height='1.35')
  50.     barry = Person_str("Barry", "male")
  51.     helen = Person_str("Helen", "female", hobby="painting",
  52.                        weight='40', favorite_language="python",
  53.                        nationality="USA")
  54.  
  55.     print(wendy)
  56.     print(barry)
  57.     print(helen)
  58.  
  59.  
  60. if __name__ == "__main__":
  61.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement