Недавно перешли на ООП с С++ на Python. Основы языка более менее знаю, но вот до ООП пришлось работать впервые.
Задача такая: "Создать класс – вещественные числа, описать поле: значение вещественного типа. Определить конструктор, функции изменения поля и получение его значения, функции разделения числа на целую и дробную части, формирование действительного числа из двух целых, соответствующих целой и дробной частям (в формате с фиксированной точкой). Перегрузить операции < (сравнение действительных чисел по значению целой части), [] (выделение дробной части числа). Отсортировать массив экземпляров класса действительных чисел по убыванию значения целой части, программно проверить, будут ли числа в массиве упорядочены, если учитывать дробные части.
Прошу помощи со следующими пунктами:
1) Перегрузить операции < и []
2) Отсортировать массив экземпляров класса действительных чисел по убыванию значения целой части.
Код:
class Float(object):
def __init__(self, arg): #конструктор
self.__arg = arg
@property #геттер
def getarg(self):
return self.__arg
def display_info(self): #выведение результатов
print(f"\nЧисло: {self.__arg}")
def rozdel(self): #розділение на целую и дробную части
self.a = int(self.__arg)
self.b = self.__arg - int(self.__arg)
print(f"\nЦелая часть: {self.a}, Дробная часть: {self.b}")
self.c = self.a + self.b
print(f"\nПочаткове число: {self.c}")
def __lt__(self, other): #перегрузка <
return self.a < other.a
#------------------------------------------------------------------
def SortArr(arr):
print(self.a)
for i in range(len(arr)):
min = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min]:
min = j
arr[i], arr[min] = arr[min], arr[i]
#------------------------------------------------------------------
if __name__ == '__main__':
size = int(input("Введите кол-во элементов: "))
arr = [Float(i) for i in range(size)]
j = 0
for i in arr:
j += 1
print("---------------------")
print("Вариант %d" %(j))
a = float(input("Введите вещественное число: "))
b = Float(a)
b.display_info()
b.rozdel()
print("\n-*-*-*-*-*-*-*-*-*-*-*-*-")
print("Данные после сортировки:")
SortArr(arr)
for i in range(size):
print(arr)
print("-*-*-*-*-*-*-*-*-*-*-*-*-")