class BankAccount:

    def __init__(self, name, balance):
        self.name = name
        self.__balance = balance

    @property
    def my_balance(self):
        return self.__balance

    @my_balance.setter
    def my_balance(self, value):
        if not isinstance(value, (int, float)):
            raise ValueError('Баланс должен быть числом')

    @my_balance.deleter
    def my_balance(self):
        del self.__balance


class MagicBox:
    def __init__(self, contents=None):
        self._contents = contents

    @property
    def contents(self):
        if self._contents == "rabbit":
            return "A magical rabbit!"
        else:
            return self._contents
    
    @contents.setter
    def entity(self, new_contents):
        if new_contents == "wishes":
            print("Your wishes are granted!")
            self._contents = new_contents
        else:
            print("the magic didn't work this time.")
            self._contents = new_contents


class Celsius:

    def __init__(self, temp) -> None:
        self.__temperature = temp

    def to_fahrenheit(self):
        return self.__temperature*9/5 + 32

    @property
    def temperature(self):
        return self.__temperature

    @temperature.setter
    def temperature(self, value):
        if value < -273.15:
            raise ValueError("Температура должна быть больше 273.15")
        else:
            self.__temperature = value


class File:

    def __init__(self, size_in_bytes):
        self._size_in_bytes = size_in_bytes

    @property
    def size(self):
        if self._size_in_bytes < 1024:
            return f"{self._size_in_bytes} B"
        elif self._size_in_bytes < 1048576:
            return "%.2f KB" % (self._size_in_bytes/1024.0)
        elif self._size_in_bytes < 1073741824:
            return "%.2f MB" % (self._size_in_bytes/1048576.0)
        else:
            return "%.2f GB" % (self._size_in_bytes/1073741824.0)

    @size.setter
    def size(self, value):
        self._size_in_bytes = value


class Notebook:

    def __init__(self, notes: list):
        self._notes = notes

    @property
    def notes_list(self):
        for i, j in enumerate(self._notes):
            print(f"{i+1}.{j}")

def main():
    # acc = BankAccount('Ivan', 200)
    # print(acc.my_balance)

    note = Notebook(['Buy Potato', 'Buy Carrot', 'Wash car'])
    note.notes_list

    '''
    box = MagicBox("rubies")
    print(box.contents)
    print(box._contents)
    box.entity = "wishes"
    print(box._contents)
    print(box.entity)
    '''

    '''
    cel = Celsius(12.0)
    cel.temperature = 15
    cel.temperature = -300
    print(cel.temperature)
    '''



if __name__ == '__main__':
    main()