История изменений
Исправление dimgel, (текущая версия) :
Можно придумать защиту от дурака, но только от неизобретательного.
Если это про Circle.draw(rectangle), то изобретательность тут не при чём. Это общая проблема всех динамически типизированных языков, в данном случае я её просто наглядно подсветил.
Зато передача bound/unbound методов в питоне выглядит куда более прямо.
В питоне я не силён. Пытался изучать года 3 назад – с одного туториала два экрана претензий в блокнотик набралось. Через пару месяцев наткнулся, глянул печально и стёр. Не моё, в общем. Так что теперь поди вспомни, что такое bound-методы.
Внезапно в плюсах, где this передается неявно, возможны все три варианта.
А вот где в плюсах явная передача this в не-статические методы класса – посмотрел бы с удовольствием. Разве что как обычным дополнительным параметром в обычную функцию – но это и не ООП нифига, это C-style эмуляция без полиморфизма (хм, вернее без vtable; параметр-то можно подсовывать полиморфный, если указателем/ссылкой). Ну ещё совсем изредка бывают нетипичные хаки когда из static-метода вызывается не-static (e.g. thread-функция с экземпляром передаваемым через void* параметр, делегирующая к не-static методу).
Исправление dimgel, :
Можно придумать защиту от дурака, но только от неизобретательного.
Если это про Circle.draw(rectangle), то изобретательность тут не при чём. Это общая проблема всех динамически типизированных языков, в данном случае я её просто наглядно подсветил.
Зато передача bound/unbound методов в питоне выглядит куда более прямо.
В питоне я не силён. Пытался изучать года 3 назад – с одного туториала два экрана претензий в блокнотик набралось. Через пару месяцев наткнулся, глянул печально и стёр. Не моё, в общем. Так что теперь поди вспомни, что такое bound-методы.
Внезапно в плюсах, где this передается неявно, возможны все три варианта.
А вот где в плюсах явная передача this в не-статические методы класса – посмотрел бы с удовольствием. Разве что как обычным дополнительным параметром в обычную функцию – но это и не ООП нифига, это C-style эмуляция без полиморфизма. Ну ещё совсем изредка бывают нетипичные хаки когда из static-метода вызывается не-static (e.g. thread-функция с экземпляром передаваемым через void* параметр, делегирующая к не-static методу).
Исправление dimgel, :
Можно придумать защиту от дурака, но только от неизобретательного.
Если это про Circle.draw(rectangle), то изобретательность тут не при чём. Это общая проблема всех динамически типизированных языков, в данном случае я её просто наглядно подсветил.
Зато передача bound/unbound методов в питоне выглядит куда более прямо.
В питоне я не силён. Пытался изучать года 3 назад – с одного туториала два экрана претензий в блокнотик набралось. Через пару месяцев наткнулся, глянул печально и стёр. Не моё, в общем. Так что теперь поди вспомни, что такое bound-методы.
Внезапно в плюсах, где this передается неявно, возможны все три варианта.
А вот где в плюсах явная передача this в не-статические методы класса – посмотрел бы с удовольствием. Разве что как обычным дополнительным параметром в обычную функцию – но это и не ООП нифига, это C-style эмуляция без полиморфизма. Ну ещё совсем изредка бывают нетипичные хаки когда из static-метода вызывается не-static (e.g. thread-функция с экземпляром в качестве void* параметра, делегирующая к не-static методу).
Исходная версия dimgel, :
Можно придумать защиту от дурака, но только от неизобретательного.
Если это про Circle.draw(rectangle), то изобретательность тут не при чём. Это общая проблема всех динамически типизированных языков, в данном случае я её просто наглядно подсветил.
Зато передача bound/unbound методов в питоне выглядит куда более прямо.
В питоне я не силён. Пытался изучать года 3 назад – с одного туториала два экрана претензий в блокнотик набралось. Через пару месяцев наткнулся, глянул печально и стёр. Не моё, в общем. Так что теперь поди вспомни, что такое bound-методы.
Внезапно в плюсах, где this передается неявно, возможны все три варианта.
А вот где в плюсах явная передача this в не-статические методы класса – посмотрел бы с удовольствием. Разве что как обычным дополнительным параметром в обычную функцию – но это и не ООП нифига, это C-style эмуляция без полиморфизма. Ну ещё совсем изредка бывают нетипичные хаки когда из static вызывается не-static (e.g. thread-функция с экземпляром в качестве void* параметра).