Решение задачи Счетчик инстансов с Яндекс Контест

Без пояснения   Просмотров: 2157


Реализуйте метакласс InstanceSemaphore, который следил бы за количеством инстансов классов, использующих его. Количество инстансов указывается в свойстве класса __max_instance_count__. Обратите внимание, что число объектов каждого класса регулируется отдельно. Пример

class A(metaclass=InstanceSemaphore):
__max_instance_count__ = 2

def __init__(self, *args):
pass



class B(metaclass=InstanceSemaphore):
__max_instance_count__ = 1

def __init__(self, *args):
pass

a_one = A('one')
a_two = A('two')
b_one = B('one')
до этого момента всё шло гладко, а вот a_three = A('three') выкинет исключение TypeError Для простоты считайте что все инстансы живут вечно.

Формат ввода
Ваш код должен иметь такой вид:

import sys

...

ваши импорты и реализация

класс должен называться «InstanceSemaphore»

...

exec(sys.stdin.read())

(Программа выполнит код, записанный во входном файле)

Код

import sys


class InstanceSemaphore(type):
    c = {}

    def __call__(cls, *args, **kwargs):
        if cls.__max_instance_count__ <= 0:
            raise TypeError
        if cls not in cls.c:
            cls.c[cls] = 0
        cls.c[cls] += 1
        if cls.__max_instance_count__ < cls.c[cls]:
            raise TypeError
        return super().__call__(*args, **kwargs)


exec(sys.stdin.read())

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться

  1. Avatar
    Moriartyyy
    2025-10-27 01:27:52
    https://mgmarket6.at/?ref=stickjrtg

    ..... Экосистемный маркетплейс!

    ///МЕГА... Когда ты произносишь данное тебе слово, ты будто произносишь заклинание, которое открывает врата в другой Мир.
    Его знаю там, где нет даже радио, о нём говорят в самых темных уголка даркнета, где правила писались кровью, а валютой была Информация.
    Он создал не просто площадку, а целую экосистему, Юридической помощи, Медицинской помощи, Благотворительных фондов, Анонимных форумов, Зашифрованных чатов и Цифровой защиты..(мега ссылка)
    Никто не знал, кто стоит за этим псевдонимом, но все чувствовали его присутствие, его всевидящее око, следящее за каждым шагом.

    Говорили, что он – гений, злодей, виртуоз цифрового мира, способный манипулировать реальностью по своему усмотрению. 
    Это классическая характеристика профессора Мориарти. Он не просто злодей; он — «Наполеон преступного мира(мега ссылка)». Его сила заключается не в физической мощи, а в интеллекте и информации.

    Площадка росла и развивалась. Даркнет-каталог MЕGA, создан в далеком 2015 году(мега ссылка), более 10 лет радует своих пользователей бесперебойной работой. Благодаря гениальному маркетингу и искреннему отношению к клиентам, стала топ-1 даркнет-каталогом в СНГ, где сотни тысяч клиентов совершают сделки.


    И все это – под молчаливым наблюдением Профессора, играющего в свою дьявольскую шахматную партию.....
    /// - это словно целая Вселенная, со своей жизненной экосистемой....


Заявка на расчет