Помогите пожалуйста с задачами на пайтон
2. Создайте базовый класс Shape для рисования плоских фигур. Определите методы:
■ Show() — вывод на экран информации о фигуре;
■ Save() — сохранение фигуры в файл;
■ Load() — считывание фигуры из файла
Определите производные классы:
■ Square — квадрат, который характеризуется координатами левого верхнего угла и длиной стороны;
■ Rectangle — прямоугольник с заданными координатами верхнего левого угла и размерами;
■ Circle — окружность с заданными координатами центра и радиусом;
Создайте список фигур, сохраните фигуры в файл.
3. Создать класс Flat (квартира). Реализовать перегруженные операторы:
■ Проверка на равенство площадей квартир (операция ==);
■ Проверка на неравенство площадей квартир (операция !=);
■ Сравнение двух квартир по цене (операции > < <= >=).
4. Создайте класс Passport (паспорт), который будет содержать паспортную информацию о гражданине заданной страны. С помощью механизма наследования, реализуйте класс ForeignPassport (загран.паспорт) производный от Passport. Напомним, что заграничный паспорт содержит помимо паспортных данных, также данные о визах, номер заграничного паспорта(то есть нужно создать новый конструктор)
5. Создать базовый класс Employer (служащий) с функцией Print(). Она должна выводить информацию о служащем. В случае базового класса это может быть строка с надписью This is Employer class. Создайте от него три производных класса: President, Manager, Worker. Переопределите функцию Print() для вывода информации, соответствующей каждому типу служащего
Ответы
2)
import pickle
class Shape:
def __init__(self):
self.shape_type = ""
def Show(self):
pass
def Save(self, filename):
with open(filename, "wb") as f:
pickle.dump(self, f)
@staticmethod
def Load(filename):
with open(filename, "rb") as f:
return pickle.load(f)
class Square(Shape):
def __init__(self, x, y, side_length):
super().__init__()
self.x = x
self.y = y
self.side_length = side_length
self.shape_type = "square"
def Show(self):
print(f"Square: x={self.x}, y={self.y}, side_length={self.side_length}")
class Rectangle(Shape):
def __init__(self, x, y, width, height):
super().__init__()
self.x = x
self.y = y
self.width = width
self.height = height
self.shape_type = "rectangle"
def Show(self):
print(f"Rectangle: x={self.x}, y={self.y}, width={self.width}, height={self.height}")
class Circle(Shape):
def __init__(self, x, y, radius):
super().__init__()
self.x = x
self.y = y
self.radius = radius
self.shape_type = "circle"
def Show(self):
print(f"Circle: x={self.x}, y={self.y}, radius={self.radius}")
shapes = [Square(10, 10, 20), Rectangle(30, 30, 40, 50), Circle(60, 60, 30)]
for shape in shapes:
shape.Show()
shape.Save(f"{shape.shape_type}.pickle")
loaded_shapes = []
for shape_type in ["square", "rectangle", "circle"]:
loaded_shapes.append(Shape.Load(f"{shape_type}.pickle"))
for shape in loaded_shapes:
shape.Show()
3)
class Flat:
def __init__(self, area, price):
self.area = area
self.price = price
def __eq__(self, other):
return self.area == other.area
def __ne__(self, other):
return self.area != other.area
def __lt__(self, other):
return self.price < other.price
def __gt__(self, other):
return self.price > other.price
def __le__(self, other):
return self.price <= other.price
def __ge__(self, other):
return self.price >= other.price
flat1 = Flat(100, 100000)
flat2 = Flat(80, 80000)
flat3 = Flat(100, 120000)
print(f"flat1 == flat2: {flat1 == flat2}")
print(f"flat1 != flat2: {flat1 != flat2}")
print(f"flat1 < flat2: {flat1 < flat2}")
print(f"flat1 > flat2: {flat1 > flat2}")
print(f"flat1 <= flat2: {flat1 <= flat2}")
print(f"flat1 >= flat2: {flat1 >= flat2}")
print(f"flat1 == flat3: {flat1 == flat3}")
print(f"flat1 != flat3: {flat1 != flat3}")
print(f"flat1 < flat3: {flat1 < flat3}")
print(f"flat1 > flat3: {flat1 > flat3}")
print(f"flat1 <= flat3: {flat1 <= flat3}")
print(f"flat1 >= flat3: {flat1 >= flat3}")
4)
class Passport:
def __init__(self, country, name, surname, birth_date):
self.country = country
self.name = name
self.surname = surname
self.birth_date = birth_date
def Print(self):
print(f"Passport info: country={self.country}, name={self.name}, surname={self.surname}, birth_date={self.birth_date}")
class ForeignPassport(Passport):
def __init__(self, country, name, surname, birth_date, passport_number, visas):
super().__init__(country, name, surname, birth_date)
self.passport_number = passport_number
self.visas = visas
def Print(self):
print(f"Foreign passport info: country={self.country}, name={self.name}, surname={self.surname}, birth_date={self.birth_date}, passport_number={self.passport_number}, visas={self.visas}")
passport1 = Passport("USA", "John", "Doe", "01.01.1990")
passport1.Print()
passport2 = ForeignPassport("USA", "Jane", "Doe", "02.02.1995", "123456789", ["UK", "France"])
passport2.Print()
5)
class Employer:
def Print(self):
print("This is Employer class.")
class President(Employer):
def Print(self):
print("This is President class.")
class Manager(Employer):
def Print(self):
print("This is Manager class.")
class Worker(Employer):
def Print(self):
print("This is Worker class.")
employer = Employer()
employer.Print()
president = President()
president.Print()
manager = Manager()
manager.Print()
worker = Worker()
worker.Print()