Интуитивно класс List
должен реализовать атрибут или способ для извлечения длины экземпляра. К счастью, у Python'lists есть скрытый метод под названием __len__
. К сожалению, этот метод не предназначен для непосредственного использования. Вместо этого я должен использовать внешнюю функцию, которая будет читать скрытый метод для меня.Причина foo .__ x__ и x (foo) в Python (т. Е. Len и __len__)
Как будто мне нужно попросить кого-нибудь открыть холодильник, чтобы взять пиво для меня. Пиво в холодильнике, у меня есть обе руки, и я должен сам это сделать.
Концептуально этот подход кажется любопытным. Почему бы не иметь атрибут (а не метод) для получения длины списка.
Другими словами, я бы предпочел использовать foo.len
вместо foo.len()
или foo.__len__
. len(foo)
выглядит более странным для меня.
Есть ли объяснение для этой реализации?
Это answer частично отвечает на мой вопрос, но мое разочарование остается.
[This] (http://effbot.org/pyfaq/why-does-python-use-methods-for-some-functionality-eg-list-index-but-functions-for-other-eg-len -list.htm), возможно, стоит прочитать. –
Как и [этот] (http://lucumr.pocoo.org/2011/7/9/python-and-pola/) (потребовалось некоторое время, чтобы найти его снова). –
@MathiasEttinger обе статьи ответ на мой вопрос. Я понимаю философию, и мне приходится иметь дело с ней. – nowox