1. Python / Говнокод #17963

    −88

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    С сайта http://www.codecademy.com/
    
    Dot Notation
    Let's take a closer look at why you use len(string) and str(object), but dot notation (such as "String".upper()) for the rest.
    
    lion = "roar"
    len(lion)
    lion.upper()
    
    Methods that use dot notation only work with strings.
    
    On the other hand, len() and str() can work on other data types.

    То ли лыжи не едут, то ли я ебанутый.

    Запостил: kegdan, 09 Апреля 2015

    Комментарии (54) RSS

    • показать все, что скрытоВ питоне нет полиморфизма?
      Или нет его в создателе питона?
      Ответить
    • показать все, что скрытоПитон ебанутый, я как-то тут прям подгорал на этой теме.
      Ответить
    • показать все, что скрытоОбъясните тупому, что здесь не так-то? В этой фразе: "Methods that use dot notation only work with strings."?

      Так она не имеет к реальности никакого отношения.
      Ответить
      • показать все, что скрытото, что len и to_str тоже должны были бы быть методами
        Ответить
        • показать все, что скрытоНу если вы очень хотите, то: a.__len__ и a.__str__ :)
          Вот здесь немного аргументации почему Гвидо сделал так: http://stackoverflow.com/a/237312/2709018
          Ответить
          • показать все, что скрытоОй, я запомню этот аргумент, пожалуй. Лучше него может быть только "если вы очень хотите, то можете в своих классах реализовывать методы len() и str()".
            Ответить
          • показать все, что скрыто> http://stackoverflow.com/a/237312/2709018

            говно-отмазки.

            можно было сделать оба варианта, и дать разрабу свободу, в зависимости от контекста, выбирать что/как вызывать.

            я лично предпочитаю нотацию a.len() потому что в случае если что-то не ястно, то я точно знаю где смотреть доки/сырцы. в то время как len(a) - а может функция локально переопределена? и т.д.

            да, len(a) читабельней. но в общем случае, a.len() нотация просто однозначна и не порождает никаких вопросов что и как. ну и само собой разумеется, a.len() я могу переопределить - len() из стандартной библиотеки переопределить шансов нету.
            Ответить
            • показать все, что скрыто> The obvious thing when working with an object being, of course, a method. – Peter Cooper May 5 '12 at 23:59
              3
              > @Peter: I'd pay $20 to anyone with photo evidence that they taped your comment to Guido's back. $50 if it's on his forehead. – bug Jan 28 '13 at 19:36

              LOL
              Ответить
            • показать все, что скрыто> a.len() нотация просто однозначна

              Да ну! В той же теме на SO ссылка:
              http://lucumr.pocoo.org/2011/7/9/python-and-pola/

              > If you look at Java in comparison what will we find? A builtin array has a field called .length. A builtin string however is an actual object and has a method called .length(). A map or list in Java responds to .size(). All the XML APIs in Java will use .getLenght() instead, so will the reflection API for arrays and the list goes on.
              Ответить
              • показать все, что скрытомне начать приводить примеры граблей из питоновых библиотек?

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

                я недавно читал нечто подобное про руби. меня просто убило что ни один из примеров (которыми восхваляли рубиновый principle of least astonishment) не отражал реалий тех граблей по которым мне как начинающему пришлось пройтись.
                Ответить
      • показать все, что скрытоне всё есть объект.

        не у всех объектов тот же самый duck-typing интерфейс.

        другими словами - огороды и грабли.
        Ответить
    • Ьы ебанутый
      Ответить

    Добавить комментарий