Skip to content

Commit f4dfc05

Browse files
committed
comments that explain what each line does in predictInheritance.py
1 parent 6991373 commit f4dfc05

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Parent class stores a person's first name and last name
2+
class Parent:
3+
def __init__(self, first_name: str, last_name: str):
4+
self.first_name = first_name
5+
self.last_name = last_name
6+
# Returns the person's first and last name together
7+
def get_name(self) -> str:
8+
return f"{self.first_name} {self.last_name}"
9+
10+
# Child inherits the fields and methods from Parent
11+
# It also allows the person to change their last name
12+
class Child(Parent):
13+
def __init__(self, first_name: str, last_name: str):
14+
super().__init__(first_name, last_name)
15+
self.previous_last_names = []
16+
# Changes the last name and saves the old name
17+
def change_last_name(self, last_name) -> None:
18+
self.previous_last_names.append(self.last_name)
19+
self.last_name = last_name
20+
# Returns the current name and the original last name
21+
def get_full_name(self) -> str:
22+
suffix = ""
23+
if len(self.previous_last_names) > 0:
24+
suffix = f" (née {self.previous_last_names[0]})"
25+
return f"{self.first_name} {self.last_name}{suffix}"
26+
# Create child object
27+
person1 = Child("Elizaveta", "Alekseeva")
28+
# Child inherits get_name() from Parent
29+
# Output: Elizaveta Alekseeva
30+
print(person1.get_name())
31+
# Child has its own get_full_name() method
32+
# Output: Elizaveta Alekseeva
33+
print(person1.get_full_name())
34+
# Change the last name
35+
person1.change_last_name("Tyurina")
36+
# The current last name is now Tyurina
37+
# Output: Elizaveta Tyurina
38+
print(person1.get_name())
39+
# Shows the new name and the previous last name
40+
# Output: Elizaveta Tyurina (née Alekseeva)
41+
print(person1.get_full_name())
42+
# Create a Parent object
43+
person2 = Parent("Elizaveta", "Alekseeva")
44+
# Parent has get_name(), so this works
45+
# Output: Elizaveta Alekseeva
46+
print(person2.get_name())
47+
# This causes an AttributeError because Parent
48+
# does not have a get_full_name() method
49+
print(person2.get_full_name())
50+
# This also causes an AttributeError because Parent
51+
# does not have a change_last_name() method
52+
person2.change_last_name("Tyurina")
53+
# get_name() still works because it belongs to Parent
54+
# Output: Elizaveta Alekseeva
55+
print(person2.get_name())
56+
# This would cause another AttributeError
57+
# because get_full_name() only exists in Child
58+
print(person2.get_full_name())

0 commit comments

Comments
 (0)