А как в этом вашем питоне делается расширяемая функциональность, вот например, в этом нашем haskell делается класс типов, в котором перечислены функции, которые должны быть реализованы для типа (упрощенно), потом в разных модулях можно это реализовать причем уже для существующих и для новых типов и для тех которые не я писал. Как мне что-то похожее в питонах замутить правильным образом? Т.е. сейчас есть метод, в котором пачка if isinstance(val, ...): мне нужно сделать это расширяемым, т.е. чтобы а. можно было не свалку в одном файле делать, а как-то расширяемо, б, чтобы юзер мог добавлять свои типы.
2017-06-01 18:14:37

Участники:
@segfault - 3, @max630 - 3, @qnikst - 2, @tosh - 2, @mabu - 1, @blaze - 1, @Kerrigan - 1

@blaze
так duck typing же, бери да зови методы на объекте, и надейся что они там будут.
#2873230/1 2017-06-01 18:15:25
@qnikst
их там заведомо нет нужно как-то расширяемо добавлять, просить пользователя манкипатчить объекты? я так могу, но принято ли так?
#2873230/2 → /1 2017-06-01 18:41:09
@segfault
Ну в петоне есть наследование, можно предоставить класс с дефолтными методами и заставить его снаследовать и переопределить например. Но ни каких гарантий, естественно.
#2873230/3 → /2 2017-06-01 18:47:44
@mabu
Там что, нету интерфейсов типа Interface?
#2873230/4 2017-06-01 18:58:36
@qnikst
чужие классы, нужно именно что расширять чужое.
#2873230/5 → /3 2017-06-01 19:13:47
@segfault
Ну если свой класс подсунуть ни как, то манки патчинг.
#2873230/6 → /5 2017-06-01 19:14:27
@Kerrigan
есть интерфейсы из zope и абстрактные классы из abc
#2873230/7 → /4 2017-06-02 05:18:14
@segfault
> интерфейсы из zope Чот ржу.
#2873230/8 → /7 2017-06-02 05:28:56
@tosh
А что происходит внутри if? Пока выглядит так, что расширяемо и не храня в одном месте код, вполне можно сделать миксинами наследуемыми.
#2873230/9 2017-06-02 05:49:21
@tosh
Или я неправильно понял задачу и надо не список if-ов расширять, а создать таки интерфейс?
#2873230/10 → /9 2017-06-02 05:55:46
@max630
а почему бы пользователю не отдать тебе враппер который и предоставит тебе нужные методы? в классическом oop по-моему так и делается
#2873230/11 → /2 2017-06-02 06:27:54
@max630
вообще есть какая-то наркомания с метаобьектами, может и можно сделать типа extension methods
#2873230/12 → /2 2017-06-02 06:29:07
@max630
вообще есть какая-то наркомания с метаобьектами, может и можно сделать типа extension methods
#2873230/13 → /2 2017-06-02 06:29:09 X