1
0
forked from tdwojak/Python2017
Python2017/labs04/task02.py
Przemysław Kaczmarek cf0d9945b9 Resolved
2017-12-14 18:09:05 +01:00

83 lines
2.7 KiB
Python

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
**ć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=0
@staticmethod
def add_id():
Employee.id+=1
return id
def __init__(self, name, surname):
Employee.add_id()
self.id = Employee.id
self.name = name
self.surname = surname
def get_id(self):
return self.id
def __repr__(self):
return '<Employee, %s, %s %s>' % (self.id,self.name,self.surname)
class Recruiter(Employee):
def __init__(self,name,surname):
super().__init__(name,surname)
self.recruited=[]
def recruite(self,Employee):
self.recruited.append(Employee.get_id())
def __repr__(self):
return '<Recruiter, %s, %s %s>' % (self.id, self.name, self.surname)
class Programmer(Employee):
def __init__(self,name,surname,Recruiter):
super().__init__(name,surname)
self.recruiter = Recruiter.get_id()
def __repr__(self):
return '<Programmer, %s, %s %s>' % (self.id, self.name, self.surname)
def TestFunction():
pracownik_przemek=Employee('Przemyslaw','Kaczmarek')
print(pracownik_przemek.name,pracownik_przemek.surname)
pracownik_michal=Employee('Michał','Kowalski')
rekruter_mariusz=Recruiter('Mariusz','Małysz')
programista_adam=Programmer('Adam','Kowalski',rekruter_mariusz)
rekruter_maciej=Recruiter('Maciej','Fisko')
rekruter_maciej.recruite(pracownik_przemek)
rekruter_maciej.recruite(rekruter_mariusz)
rekruter_mariusz.recruite(programista_adam)
rekruter_mariusz.recruite(pracownik_michal)
print('Maciej zrekrutowal: ',rekruter_maciej.recruited)
print('Mariusz zrekrutowal: ',rekruter_mariusz.recruited)
print('Adam zostal zrekrutowany przez: ',programista_adam.recruiter)
print('Liczba pracownikow: ',Employee.id)
print(pracownik_przemek)
print(pracownik_michal)
print(rekruter_mariusz)
print(programista_adam)
print(rekruter_maciej)
TestFunction()