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})