forked from tdwojak/Python2017
70 lines
1.8 KiB
Python
70 lines
1.8 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``
|
|
|
|
|
|
class Employee:
|
|
_id = 0
|
|
|
|
def __init__(self, name, surname):
|
|
Employee._id += 1
|
|
self.id = Employee._id
|
|
self.name = name
|
|
self.surname = surname
|
|
|
|
def get_id(self):
|
|
return self.id
|
|
|
|
|
|
class Recruiter(Employee):
|
|
recruited = []
|
|
|
|
def recruit(self, Employee):
|
|
emp_id = Employee.id
|
|
self.recruited.append(emp_id)
|
|
|
|
|
|
class Programmer(Employee):
|
|
def __init__(self, name, surname, Recruiter):
|
|
super().__init__(name, surname)
|
|
self.recruiter = Recruiter.id
|
|
|
|
|
|
# setup new employees
|
|
emp_1 = Employee('Janusz', 'Kowalski')
|
|
emp_2 = Employee('Marek', 'Marecki')
|
|
|
|
print (emp_1.get_id())
|
|
print (emp_2.get_id())
|
|
|
|
# setup new recruiter
|
|
rec_1 = Recruiter('Random', 'Recruiter')
|
|
rec_1.recruit(emp_2)
|
|
|
|
# check for Recruiter
|
|
print(rec_1.id, rec_1.name, rec_1.surname, rec_1.recruited)
|
|
|
|
# setup new Programmer
|
|
prog_1 = Programmer('Python', 'Programmer', rec_1)
|
|
|
|
# check for new programmer
|
|
print(prog_1.id, prog_1.name, prog_1.surname, prog_1.recruiter)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|