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

  • Редактор

    А вот в моей карьере случился провал. Я инвестировал много энтузиазма неофита в Far Editor (включая плагины и т.д.), и при переходе на линуксы я этот…

  • чистка десктопа

    На любом рутовом разделе при апдейтах рано или поздно заканчивается место. (Это легко доказать, поскольку размер софта является возрастающей функцией…

  • ретро-новости

    Случайно прилетел апдейт и сделал так, что грузится mesa, причём по всем признакам должна быть nvidia, но в strace к glxgears видно, что таки mesa. Я…

  • 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

  • Редактор

    А вот в моей карьере случился провал. Я инвестировал много энтузиазма неофита в Far Editor (включая плагины и т.д.), и при переходе на линуксы я этот…

  • чистка десктопа

    На любом рутовом разделе при апдейтах рано или поздно заканчивается место. (Это легко доказать, поскольку размер софта является возрастающей функцией…

  • ретро-новости

    Случайно прилетел апдейт и сделал так, что грузится mesa, причём по всем признакам должна быть nvidia, но в strace к glxgears видно, что таки mesa. Я…