Czy możesz połączyć metody łatkowe na typach rdzeniowych w Pythonie?

Ruby może dodawać metody do klasy Number i innych typów podstawowych, aby uzyskać takie efekty:

1.should_equal(1)

Ale wydaje się, że Python nie może tego zrobić. Czy to prawda? A jeśli tak, to dlaczego? Czy ma to coś wspólnego z tym, żerodzaj nie można zmodyfikować?

Aktualizacja: Zamiast mówić o różnych definicjach łatania małp, chciałbym po prostu skupić się na powyższym przykładzie. Doszedłem już do wniosku, że nie da się tego zrobić, jak kilku z was odpowiedziało. Ale chciałbym bardziej szczegółowe wyjaśnienie, dlaczego nie można tego zrobić, a może to, co pozwoli na to, jeśli jest dostępna w Pythonie.

Aby odpowiedzieć na niektóre z was: Powód, dla którego jamoc chcesz to zrobić po prostu estetyką / czytelnością.

 item.price.should_equal(19.99)

To brzmi bardziej jak angielski i wyraźnie wskazuje, która wartość jest testowana, a która jest wartością oczekiwaną, tak jak:

should_equal(item.price, 19.99)

Ta koncepcja jest coRspec i niektóre inne ramy Ruby są oparte na.

questionAnswers(13)

yourAnswerToTheQuestion