Ruby может добавлять методы к классу Number и другим основным типам, чтобы получить такие эффекты, как:
1.should_equal(1)
Но похоже, что python не может этого сделать. Это правда? И если да, то почему? Имеет ли это отношение к тому, что тип не может быть изменен?
Обновление: вместо того, чтобы говорить о различных определениях патчей обезьян, я хотел бы просто сосредоточиться на приведенном выше примере. Я уже пришел к выводу, что это невозможно сделать, поскольку некоторые из вас ответили. Но я хотел бы получить более подробное объяснение, почему это невозможно сделать, и, может быть, какая функция, если доступна в python, позволит это.
Чтобы ответить на некоторые из вас: причина, по которой я могу сделать это, - просто эстетика/удобочитаемость.
item.price.should_equal(19.99)
читается больше как на английском языке и четко указывает, что является тестируемым значением и которое является ожидаемым значением, как предполагается:
should_equal(item.price, 19.99)
Эта концепция - это Rspec, а некоторые другие структуры Ruby основаны на.