1+
2+ # parent class has two string fields, first_name, last_name
3+ # a method that return a string which joins the two names with a space
4+ class Parent :
5+ def __init__ (self , first_name : str , last_name : str ):
6+ self .first_name = first_name
7+ self .last_name = last_name
8+
9+ def get_name (self ) -> str :
10+ return f"{ self .first_name } { self .last_name } "
11+
12+
13+ # extends parent class
14+ # add ability to change last name, store previous last names in a list
15+ # a method that prints first and last name as well as the original last name of Child
16+ class Child (Parent ):
17+ def __init__ (self , first_name : str , last_name : str ):
18+ super ().__init__ (first_name , last_name )
19+ self .previous_last_names = []
20+
21+ def change_last_name (self , last_name ) -> None :
22+ self .previous_last_names .append (self .last_name )
23+ self .last_name = last_name
24+
25+ def get_full_name (self ) -> str :
26+ suffix = ""
27+ if len (self .previous_last_names ) > 0 :
28+ suffix = f" (née { self .previous_last_names [0 ]} )"
29+ return f"{ self .first_name } { self .last_name } { suffix } "
30+
31+
32+ person1 = Child ("Elizaveta" , "Alekseeva" )
33+ print (person1 .get_name ()) # inherit from Parent class, output = "Elizaveta Alekseeva"
34+ print (person1 .get_full_name ()) # method of Child class, output = "Elizaveta Alekseeva" no previous surname
35+ person1 .change_last_name ("Tyurina" ) # changes last name of person1, adds "Alekseeva" to previous names list
36+ print (person1 .get_name ()) # last name has changed, output = "Elizaveta Tyurina"
37+ print (person1 .get_full_name ()) # includes maiden name, output = "Elizaveta Tyurina (née Alekseeva)"
38+
39+ person2 = Parent ("Elizaveta" , "Alekseeva" )
40+ print (person2 .get_name ()) # output = "Elizaveta Alekseeva"
41+ print (person2 .get_full_name ()) # AttrbuteError - the Parent class does not have get_full_name() method
42+ person2 .change_last_name ("Tyurina" ) # same again
43+ print (person2 .get_name ()) # no problems, same as line 40
44+ print (person2 .get_full_name ()) # again, no get_full_name() method in this Parent class. Same as line 41
0 commit comments