File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # Personal stretch exercise - Review not required
2+ from abc import ABC , abstractmethod
3+ from dataclasses import dataclass , field
4+
5+ @dataclass
6+ class Person (ABC ):
7+ first_name : str
8+ last_name : str
9+
10+ @abstractmethod
11+ def get_full_name (self ) -> str : ...
12+
13+ @dataclass
14+ class Parent (Person ):
15+ def get_full_name (self ) -> str :
16+ return f"{ self .first_name } { self .last_name } "
17+
18+ @dataclass
19+ class Child (Person ):
20+ previous_last_names : list [str ] = field (default_factory = list )
21+
22+ def change_last_name (self , last_name : str ) -> None :
23+ self .previous_last_names .append (self .last_name )
24+ self .last_name = last_name
25+
26+ def get_full_name (self ) -> str :
27+ suffix = ""
28+ if len (self .previous_last_names ) > 0 :
29+ suffix = f" (née { self .previous_last_names [0 ]} )"
30+ return f"{ self .first_name } { self .last_name } { suffix } "
31+
32+ person1 = Child ("Jane" , "Doe" )
33+ print (person1 .get_full_name ())
34+ person1 .change_last_name ("Smith" )
35+ print (person1 .get_full_name ())
36+
37+ person2 = Parent ("John" , "Doe" )
38+ print (person2 .get_full_name ())
You can’t perform that action at this time.
0 commit comments