Design Circular Queue

class MyCircularQueue:

    def __init__(self, k):
        self.lim = k
        self.empty_slots = k
        self.arr = [None for _ in range(k)]
        self.fx = -1
        self.rx = -1

    def enQueue(self, value) -> bool:
        if not self.isFull():
            if (self.fx == -1 and self.rx == -1):
                self.fx = (self.fx + 1) % self.lim
            self.rx = (self.rx + 1) % self.lim
            self.arr[self.rx] = value
            self.empty_slots = self.empty_slots - 1
            return True
        else:
            return False

    def deQueue(self) -> bool:
        if self.isEmpty():
            return False
        self.empty_slots = self.empty_slots + 1
        self.fx = (self.fx + 1) % self.lim
        if self.empty_slots == 0:
            self.fx = -1
            self.rx = -1
        return True

    def Front(self) -> int:
        if self.isEmpty():
            return -1
        return self.arr[self.fx]

    def Rear(self) -> int:
        if self.isEmpty():
            return -1
        return self.arr[self.rx]

    def isEmpty(self) -> bool:
        return self.empty_slots == self.lim

    def isFull(self) -> bool:
        return self.empty_slots == 0