Каково максимальное количество методов в классе Python? - PullRequest
4 голосов
/ 08 марта 2011

Я автоматически генерирую модульные тесты для некоторого кода Python, число которого исчисляется тысячами. Модуль unittest использует классы для хранения тестов, но я предполагаю, что существует верхний предел для числа методов, которые может содержать класс - так ли это?

Ответы [ 2 ]

8 голосов
/ 08 марта 2011

Методы (и фактически все атрибуты) класса хранятся в dict. Количество элементов, которые может содержать dict, не ограничено, за исключением того, что каждый ключ должен быть уникальным.

6 голосов
/ 08 марта 2011

Я сильно сомневаюсь, что вы когда-нибудь достигнете предела, даже если бы он был. Насколько я знаю, количество методов, которые может иметь объект, ограничено только памятью. Я только что определил класс с миллионом функций, без проблем. Попробуйте, если не верите мне:

>>> class C(object): pass
>>> for i in xrange(10**6):
        exec('C.func%d=lambda self: %d'%(i,i))

>>> c = C()
>>> c.func1()
1
>>> c.func999999()
999999

Если в вашем классе более миллиона функций (ад или более десятка или около того), у вас есть другие проблемы.

...