Lecture Notes 16#
class Person:
count = 0
def __init__(self, given_name="X", surname="Y"):
self.given_name = given_name
self.surname = surname
#Person.count += 1
self.__class__.count += 1
def __str__(self):
return f"{self.surname}, {self.given_name}"
def __repr__(self):
#return f'Person("{self.given_name}", "{self.surname}")'
return f'{self.__class__.__name__}("{self.given_name}", "{self.surname}")'
def display_person(self):
print(f"My name is {self.surname}, {self.given_name} {self.surname}")
class Employee(Person):
count = 0
def __init__(self, given_name="X", surname="Y", salary=0):
#Person.__init__(self, given_name, surname)
super().__init__(given_name, surname)
self.salary = salary
def display_employee(self):
print(f"My name is {self.surname}, {self.given_name} {self.surname} and my salary is {self.salary}")
Person.count, Employee.count
(0, 0)
Person()
Person("X", "Y")
Person.count is Employee.count
False
Employee(salary=1000)
Employee("X", "Y")
e = Employee(salary=1000)
e.display_person()
My name is Y, X Y
e.__class__.__name__
'Employee'
e.display_employee()
My name is Y, X Y and my salary is 1000
Person.count
1
Employee.count
2
default dict#
a_dict = {"a": 1, "b": 2}
a_dict["a"]
1
a_dict["b"]
2
a_dict["c"]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[15], line 1
----> 1 a_dict["c"]
KeyError: 'c'
a_dict.get("c", 0)
0
a_dict
{'a': 1, 'b': 2}
a_dict["c" ] = a_dict.get("c", 0) + 1
a_dict
{'a': 1, 'b': 2, 'c': 1}
from collections import defaultdict
counter = defaultdict(int)
type(counter)
collections.defaultdict
counter["a"] = 1
counter["b"] = 2
counter
defaultdict(int, {'a': 1, 'b': 2})
counter["c"]
0
counter
defaultdict(int, {'a': 1, 'b': 2, 'c': 0})