2017-12-03 13:05:05 +01:00
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
2017-12-10 10:39:16 +01:00
#**ć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 - atrybut statyczny - counter.
#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 ( object ) :
id = 0
2017-12-10 11:42:45 +01:00
lista_id = [ ]
2017-12-10 10:39:16 +01:00
def __init__ ( self , name , surname ) :
self . name = name
self . surname = surname
self . id = Employee . id
Employee . id + = 1
2017-12-10 11:42:45 +01:00
self . lista_id . append ( self . id )
2017-12-10 10:39:16 +01:00
def get_id ( self ) :
return ( self . id )
class Recruiter ( Employee ) :
def __init__ ( self , name , surname ) :
Employee . __init__ ( self , name , surname )
self . recruited = [ ]
def recruit ( self , id ) :
if id != self . id :
2017-12-10 11:42:45 +01:00
if id in Employee . lista_id :
self . recruited . append ( id )
else :
print ( ' Nie ma takiego pracownika! ' )
2017-12-10 10:39:16 +01:00
else :
print ( ' Rekruter nie może zrekrutować samego siebie! ' )
def __str__ ( self ) :
return ( f ' Rekruter { self . name } { self . surname } zrekrutowal pracownikow o nastepujacych id: { self . recruited } ' )
class Programmer ( Recruiter ) :
def __init__ ( self , name , surname , recruiter ) :
Recruiter . __init__ ( self , name , surname )
Recruiter . id = recruiter
def recruited_by_who ( self ) :
print ( f ' Programista { self . name } { self . surname } zostal zrekrutowany przez rekrutera o nastepujacym id: { Recruiter . id } ' )
2017-12-10 11:42:45 +01:00
print ( ' ------------------------- ' )
2017-12-10 10:39:16 +01:00
pracownik1 = Employee ( ' Stefan ' , ' Stefanski ' )
print ( pracownik1 . name )
print ( pracownik1 . surname )
print ( pracownik1 . get_id ( ) )
print ( pracownik1 . id )
pracownik2 = Employee ( ' Karol ' , ' Karolinski ' )
print ( pracownik2 . name )
print ( pracownik2 . surname )
print ( pracownik2 . get_id ( ) )
print ( pracownik2 . id )
pracownik3 = Recruiter ( ' Kasia ' , ' Kasinska ' )
print ( pracownik3 . name )
print ( pracownik3 . surname )
print ( pracownik3 . id )
2017-12-10 11:42:45 +01:00
pracownik3 . recruit ( 5 )
pracownik3 . recruit ( 0 )
pracownik3 . recruit ( 1 )
2017-12-10 10:39:16 +01:00
print ( pracownik3 )
pracownik4 = Programmer ( ' Bozena ' , ' Bozeniasta ' , 2 )
print ( pracownik4 . name )
print ( pracownik4 . surname )
print ( pracownik4 . id )
print ( pracownik4 . get_id ( ) )
2017-12-10 11:42:45 +01:00
pracownik4 . recruited_by_who ( )
2017-12-10 10:39:16 +01:00
print ( ' ------------------------- ' )
2017-12-10 11:42:45 +01:00
print ( Employee . id )
print ( Employee . lista_id )
print ( ' ------------------------- ' )