painofoop | Unsorted

Telegram-канал painofoop - painofoop

-

По-русски про объектно-ориентированное программирование по версии "Elegant Objects" English-speaking chat is here: @elegantobjects Don't forget to subscribe to @yegor256news

Subscribe to a channel

painofoop

Не прям что перегрузка. Но что то хоть

Читать полностью…

painofoop

кажется в последних версиях там появилась дичь с аннотациями

Читать полностью…

painofoop

Вообще я не настоящий гофер. :)
Что такое ресивер?

Читать полностью…

painofoop

Ну вот глянул(пока по диагонали), и да, аля процедурщина на СИ - с несчастными структурами пинаемыми от одной функции к другой.

Читать полностью…

painofoop

https://www.yegor256.com/2016/07/06/data-transfer-object.html

Читать полностью…

painofoop

DTO не объект, это тип данных, в EO все должно быть объектом

Читать полностью…

painofoop

Точно. Entity изменяемые

Читать полностью…

painofoop

Чем больше я погружаюсь в различные парадигмы и стараюсь применять их на практике. Тем больше понимаю, что ни один подход невозможно применить на 100%. Т. К. В итоге ты приходишь к определенным компромиссам.
Вот вся эта история из мира софтостроения напоминает мне мир единоборств: карате круче, борьба круче, бокс круче. И даже придумали вид спорта для этого ММА. И вот проходят годы, а чемпионами становятся не мастера одного стиля, а разных стилей которые могут применять в разных ситуациях.

Так и в разных подходах. У ddd есть свои плюсы и минусы, у ЕО есть тоже много плюсов, но есть и нюансы тоже

Читать полностью…

painofoop

Всем привет! Можно ли считать EO как продолжение DDD, в части тактических паттернов?

Читать полностью…

painofoop

всё верно. Но в любой +/- компании от 3х чел разработчиков, вы придёте к тому, что нужно использовать type hinting

Читать полностью…

painofoop

здесь так же зависит от правил команды, если вы в команде. В python мире любят вешать декораторы на методы или функции.

Читать полностью…

painofoop

всё зависит от ваших целей или целей команды. Всегда лучше зависеть от интерфейсов (абстракций), а не конкретных реализаций.

Читать полностью…

painofoop

Лучше без интерфейсов, абстрактных классов ибо в python динамическая типизация

Читать полностью…

painofoop

если через интерфейс надо, то можно вот так

from abc import ABC, abstractmethod


class SourceObj:
"""
Ваш исходный объект
"""
def do_something(self):
pass

def do_another(self):
pass


class AbstractDecoratedSourceObj(ABC):
@abstractmethod
def do_something(self):
pass

@abstractmethod
def do_another(self):
pass


class DecoratedSourceObj(AbstractDecoratedSourceObj):
"""
Декоратор для исходного объекта
"""
def __init__(self,
source_obj: SourceObj):
self._source_obj = source_obj

def do_something(self):
# добавляем, что нужно
self._source_obj.do_something()
# добавляем, если нужно ещё что-то

def do_another(self):
# добавляем, что нужно
self._source_obj.do_another()
# добавляем, если нужно ещё что-то

Читать полностью…

painofoop

Определить им call который дандер метод так чтобы он принимал то что надо декорировать (функцию или класс например)

Читать полностью…

painofoop

Чекай singledispatch

Читать полностью…

painofoop

Нету в питоне перегрузки методов

Читать полностью…

painofoop

В питоне есть перегрузка методов но думаю с конструктором не сработает. Хотя не пробовал

Читать полностью…

painofoop

Тогда вообще не понял, чем DTO отличается от обычной СИ - лайк процедурщины...

Читать полностью…

painofoop

ну, хотя да, плюс объект должен быть неизменяемым.

Читать полностью…

painofoop

Хм, а DTO противоречит EO разве?

Читать полностью…

painofoop

А можно узнать, про какие вещи речь?

Читать полностью…

painofoop

Если считать "продолжение" как "дополнение", то нет. В DDD есть вещи, которые в EO являются антипаттернами.

Читать полностью…

painofoop

У @yegor256 есть примеры на руби, симпатично выглядит

Читать полностью…

painofoop

Не нравятся декораторы

Читать полностью…

painofoop

Но в python утиная типизация

Читать полностью…

painofoop

Аннотации типов желательно использовать или нет?

Читать полностью…

painofoop

ну есть конечно встроенный в Python способ декорировать и методы и классы, но он мне не нравится. Там через аннотации.

Читать полностью…

painofoop

class SourceObj:
"""
Ваш исходный объект
"""
def do_something(self):
pass

def do_another(self):
pass


class DecoratedSourceObj:
"""
Декоратор для исходного объекта
"""
def __init__(self,
source_obj: SourceObj):
self._source_obj = source_obj

def do_something(self):
# добавляем, что нужно
self._source_obj.do_something()
# добавляем, если нужно ещё что-то

def do_another(self):
# добавляем, что нужно
self._source_obj.do_another()
# добавляем, если нужно ещё что-то

Читать полностью…

painofoop

Тебе нужно прикопать другой объект внутри, и вызывать его методы...

Читать полностью…
Subscribe to a channel