Question: Python Define a class called Person that can be used to describe a person. Each person object stores information about a person's surname, first name

Python
Define a class called Person that can be used to describe a person. Each person object stores information about a person's surname, first name and age. The class defines the following data fields: A data field named self.surname that defines the surname of a person. A data field named self.first_name that defines the first name of a person. A data field named self.age that defines the age of a person. The class must have the following functionality: 1. Create a person. For example: person1 = Person('Smith', 'Dick', 20) 2. Create a person without an age value. The default age is 18. For example: person2 = Person('Kim', 'Anna') 3. Return a string representing information about the person. For example: the code: print (person2) would produce the output: Anna Kim(18) 4. The class should also provide functionality to return the full name of a person. For example: print(person2.get_full_name) would produce the output: Anna Kim 5. The class should also provide functionality to increment the age value by 1. For example: person2.grow) print (person2) would produce the output: Anna Kim(19) Submit the entire class definition. For example: Test Result person1 = Person('Kim', 'Anna', 21) Anna Kim(21) print (personi ) print (type (personi )) Anna Kim print (personl .get_full_name) Anna Kim(22) personl .grow() print (personi ) P = Person('Smith', 'Dick') print(p.get_full_name()) print(p) Dick Smith Dick Smith(18) Time left 2:48:18 Continuing on from the previous question, define a class called FriendsGroup which stores information about a group of friends (i.e. a number of person objects together). The Friends Group class defines the following data fields: A data field named self.name that defines the name of a friends group. A data field named self.friends that defines a list of Person objects. The class must have the following functionality: 1. Create a group from a name. For example: group1 = FriendsGroup ("ShoppingPeers') 2. The class should provide functionality for a person to join and unjoin the group. The join() method appends the parameter Person object onto the self.friends list if the person has not joined before. The unjoin() method removes the parameter Person object from the list if the person has joined before (i.e. check if the Person object exists in the list). For example: person1 = Person ('Michael', 'Hill') group1.join(personi) group1.unjoin(personi) Note: the method should print an error message as in the examples below when a person cannot be added to or removed from the friends list. 3. The class should also provide functionality to calculate the average age value of the freinds in the friends list. Round the result to 1 decimal place. For example, the code: person2 = Person('Paul', 'Kim', 24) group1.join(personl) group1.join(person2) print(groupi.get_average_age()) would produce the output: 21.0 4. Finally, the class should provide functionality to return a string representing information about the group. The method should print the group name followed by the names of the people in the group. For example, the code: print(group1) would produce the output: Group: ShoppingPeers Michael Hill Paul Kim Submit the entire class definition in the answer box below assuming that the Person class is given. For example: Test Result 21.0 P1 = Person("Hill', 'Michael') p2 = Person('Kim', 'Paul', 24) group1 = Friends Group ("Shoppingpeers') group1.join(p1) group1.join(p2) print(group1.get_average_age()) P1 = Person("Hill', 'Michael', 24) P2 = Person("Kim', 'Paul', 26) group1 = FriendsGroup('Coding') group1.join(p1) group1.unjoin(p2) print(group1) print(group1.get_average_age()) ERROR: Paul Kim does not exist in Coding. Group: Coding Michael Hill 24.0 p1 = Person("Hill', 'Isabella', 23) gl = FriendsGroup('Sports') g1.join(p1) g1.join(p1) print(81) ERROR: Isabella Hill has already joined. Group: Sports Isabella Hill