Как выполняется метод класса, если вы не инстанцировали объект этого класса? Ссылаясь на класс TestCase в Python

Я довольно новичок в Python (и программировании в целом), так что это может быть вопрос для новичков, но я понимал, что в python, когда вы создаете класс и создаете X методов в нем, что если вы хотите использовать эти методы, вам нужно инстанцировать класс или создать экземпляр класса.

Я просматриваю модуль TestCase (тестирование козла для TDD) и замечаю, что мы можем запустить программу (выполняющую всю логику в методах классов) без фактического создания каких-либо объектов экземпляра для "вызова" этих методов напрямую.

Так что мой вопрос... как он работает.

Ex.

class AddStuff(TestCase):

      def test_equal_two(self):
          two = 1 + 1
          self.assertEqual(two, 2)

Когда я запускаю python manage.py test, это выполняется, даже если я не создал экземпляр AddStuff... Я не понимаю...

Вы правы, что (при всех разумных обстоятельствах) для вызова обычного метода требуется объект (ср. staticmethod и classmethod). При использовании такого рода фреймворка для модульного тестирования запускаемая вами программа (скрипт) не является файлом, содержащим этот класс. Программа поставляется вместе с фреймворком; она использует относительно продвинутые возможности языка, чтобы обнаружить такие классы, как этот, которые наследуются от TestCase, создать экземпляры каждого из них и вызвать тестовые функции на этих объектах.

Вернуться на верх