import random

# Класс Coin имитирует монету, которую
# можно подбрасывать (теперь это модуль, который хранится в файле).

class Coin:

    # Метод __init__ инициализирует
    # атрибут данных __sideup значением 'Орел'.

    def __init__(self) -> None:
        self.__sideup = 'Орел'

    # Метод toss генерирует случайное число
    # в диапазоне от 0 до 1. Если это число
    # равно 0, то __sideup получает значение 'Орел'.
    # В противном случае sideup получает значение 'Решка'.
        
    def toss(self):
        if random.randint(0, 1) == 0:
            self.__sideup = 'Орел'
        else:
            self.__sideup = 'Решка'

    def get_sideup(self):
        return self.__sideup
    
    

# Класс BankAccount имитирует банковский счет.
    
class BankAccaunt:

    # Метод __init__ принимает аргумент
    # с остатком на счете.
    # Он присваивается атрибуту __balance.

    def __init__(self, bal) -> None:
        self.__balance = bal

    # Метод __str__ вызывается не напрямую, а автоматически
    # во время передачи объекта в качестве аргумента в функцию print

    def __str__(self) -> str:
        return f'Остаток составляет: ${self.__balance:,.2f}'

    def deposit(self, amount):
        self.__balance += amount

    def withdraw(self, amount):
        if self.__balance >= amount:
            self.__balance -= amount
        else:
            print('Ошибка: недостаточно средств')

    def get_balance(self):
        return self.__balance
    

# Класс CellPhone содержит данные о сотовом телефоне
    
class CellPhone:

    def __init__(self, manufact='Simens', model='c55', price=120) -> None:
        self.__manufact = manufact
        self.__model = model
        self.__retail_price = price

    def set_manufact(self, manufact):
        self.__manufact = manufact

    def set_model(self, model):
        self.__model = model

    def set_retail_price(self, price):
        self.__retail_price = price

    def get_manufact(self):
        return self.__manufact
    
    def get_model(self):
        return self.__model
    
    def get_retail_price(self):
        return self.__retail_price