amarao (amarao_san) wrote,
amarao
amarao_san

Программистское

А вот сегодня у меня на работе был крайне интересный кейс, в котором "настоящий программист" мне объяснил как быть.

Есть класс, который имитирует списко-словарь (то есть список, но умеет искать по специальному значению как по ключу, отвечать на вопросы "in" в контексте ключа и т.д.). В качестве ключа хочет строку. В программе его кормят данными из двух мест - из конфига (откуда приходит строка) и списком инстансов, каждый из которых в качестве ключа использует инстанс более простого класса. Этот инстанс содержит в себе строку и всякое барахло для работы с ней.

И возникает проблема: объект из конфига и из "инстансов" не матчится, потому что одно строка, а другое инстанс.

Моё (неправильное) направление мысли было приводить к строке всё, что попадает в класс. Во всех местах. Выглядит это мягко говоря неаппетитно.

А мне сказали, что лучше сделать так, чтобы самый класс умел притворяться строкой. __cmp__, __hash__ и т.д.

И оно много лучше. Там же мне рассказали про делегацию, но я понял, что я не умею читать азбуку морзе на питоне:
sdoor.__class__.__bases__[0].__dict__['knock'].__get__(sdoor)
(http://lgiordani.com/blog/2014/08/20/python-3-oop-part-3-delegation-composition-and-inheritance/), так что вопрос плавно закрылся.

К чему это я?

К тому, что некоторые вещи очень тяжело своим собственным опытом учить. Точнее, дорого. Потому что если бы я по пути "всё приводить к строке" пошёл, то переделывать потом было бы адски тяжело.
Tags: python
Subscribe

  • ансибло-философия

    А вот я хочу продолжить думать умное про ансибл, ci/cd и прочую рабочую фигню между гитом и сервером. Классическое программирование стремится…

  • positive nagging

    Для повышения морали в коллективе было решено запретить токсичные и негативные сообщения в чате. Теперь все сообщения в чате выглядят так: Resolved…

  • Шли годы, а я учусь башу.

    Офигеть. Офигеть. echo <(echo hello) foobar /dev/fd/63 foobar Я этого честно не знал. Я знал, что в конце можно, а что можно в середине -…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 17 comments

  • ансибло-философия

    А вот я хочу продолжить думать умное про ансибл, ci/cd и прочую рабочую фигню между гитом и сервером. Классическое программирование стремится…

  • positive nagging

    Для повышения морали в коллективе было решено запретить токсичные и негативные сообщения в чате. Теперь все сообщения в чате выглядят так: Resolved…

  • Шли годы, а я учусь башу.

    Офигеть. Офигеть. echo <(echo hello) foobar /dev/fd/63 foobar Я этого честно не знал. Я знал, что в конце можно, а что можно в середине -…