Как выполняется метод класса, если вы не инстанцировали объект этого класса? Ссылаясь на класс 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
, создать экземпляры каждого из них и вызвать тестовые функции на этих объектах.