1
0
forked from tdwojak/Python2017
Python2017/labs04/task02.py

91 lines
2.8 KiB
Python
Raw Normal View History

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('-------------------------')