46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
|
'''
|
||
|
**ćwiczenie 2**
|
||
|
Napisz prostą hierarchię klas:
|
||
|
* Klasa bazowa ``Employee``, która będzie zawierać informacje o imieniu i nazwisku pracownika. Ponadto każdy pracownik otrzyma numer ``id``, który będzie unikatowy.
|
||
|
Wykorzystaj do tego atrybut statyczny. Napisz metodę ``get_id``, która zwraca identyfikator pracownika.
|
||
|
* Klasy pochodna: ``Recruiter``, która ma dodatkową mtodę ``recruit``, która jako parament przyjmuje obiekt ``Employee`` i zapisuje jego ``id`` w liście ``self.recruited``.
|
||
|
* Klasa pochodna ``Programmer``. Klasa ``Programmer`` ma przyjąć w konstruktorze podstawowe informacje (imię i nazwisko) oraz obiekt rekturera.
|
||
|
Ponadto stwórz atrybut ``recruiter``, który będzie przechowywać ``id`` rekrutera.
|
||
|
'''
|
||
|
|
||
|
class Employee:
|
||
|
ID_COUNTER = 1000
|
||
|
|
||
|
def __init__(self, first_name, second_name):
|
||
|
self.first_name = first_name
|
||
|
self.second_name = second_name
|
||
|
self.id = Employee.ID_COUNTER
|
||
|
Employee.ID_COUNTER += 1
|
||
|
|
||
|
def get_id(self):
|
||
|
return self.id
|
||
|
|
||
|
class Recruiter(Employee):
|
||
|
def __init__(self, first_name, second_name):
|
||
|
Employee.__init__(self, first_name, second_name)
|
||
|
self.recruited = []
|
||
|
|
||
|
def recruit(self, employee):
|
||
|
self.recruited.append(employee.get_id())
|
||
|
|
||
|
|
||
|
class Programmer(Employee):
|
||
|
def __init__(self, first_name, second_name, recruiter):
|
||
|
Employee.__init__(self, first_name, second_name)
|
||
|
self.recruiter = recruiter.get_id()
|
||
|
|
||
|
employee1 = Employee('John', 'Smith')
|
||
|
print(employee1.get_id())
|
||
|
employee2 = Employee('Bob', 'Marley')
|
||
|
print(employee2.get_id())
|
||
|
|
||
|
recruiter1 = Recruiter('Recruiter', 'Andy')
|
||
|
recruiter1.recruit(employee1)
|
||
|
|
||
|
programmer1 = Programmer('Programmer', 'Frank', recruiter1)
|