TypeError в Python для списка кортежей, который находит max на основе второго элемента [duplicate]

Синглтон не о единичном экземпляре!

В отличие от других ответов я не хочу говорить о том, что не так с Singletons, но чтобы показать вам, насколько они сильны и ужасны при правильном использовании!

  • Проблема: Singleton может быть проблемой в многопотоковой среде. Решение. Используйте однопоточный процесс начальной загрузки для инициализации всех зависимостей вашего синглтона.
  • Проблема. Трудно издеваться одиночки. Решение: используйте метод Factory для издевательства MyModel myModel = Factory.inject(MyModel.class); . Вы можете сопоставить MyModel с TestMyModel классом, который наследует его, везде, где MyModel будет введен, вы получите TestMyModel instread.
  • Проблема: синглтоны могут вызывать лук-поры, которые они никогда не выбрали. Решение: Ну, распоряжайтесь им! Внедрите обратный вызов в своем приложении, чтобы правильно разместить одиночные пакеты, вы должны удалить любые связанные с ними данные и, наконец: удалить их с Factory.

Как я сказал в названии singleton, речь идет не о одном экземпляре.

  • Синглтоны улучшают читаемость: вы можете посмотреть на свой класс и посмотреть, какой синглтон он ввел чтобы выяснить, что это за зависимости.
  • Синглтоны улучшают обслуживание: как только вы удалили зависимость от класса, вы просто удалили одну инъекцию синглтона, вам не нужно идти и редактировать большую ссылку других классов, которые просто изменил вашу зависимость (это вонючий код для меня @Jim Burger )
  • Синглоты улучшают память и производительность: когда что-то происходит в вашем приложении, и требуется длинная цепочка обратных вызовов для доставки, вы теряете память и производительность, используя Singleton, вы сокращаете среднего человека и улучшаете производительность и использование памяти (избегая ненужных локальных переменных).

1
задан Kasramvd 26 February 2016 в 10:41
поделиться

3 ответа

У вас где-то в вашем коде определена переменная с именем max

max = something

Поскольку:

a = [1,2,3,4,5]
print max(a)

Выводит 5 и отлично работает.

0
ответ дан Avión 19 August 2018 в 16:18
поделиться
  • 1
    В точку. Работает отлично. У меня была другая переменная с именем max. Виноват. Это раздражительно – Sunil Kamat 26 February 2016 в 10:47

Ошибка ясна: вы переопределили max как int в коде. Или вы используете чужой код, который это делает. Таким образом, у вас, вероятно, есть что-то вроде этого где-то

max = 4

Вот почему очень сложно использовать встроенные имена в качестве имен переменных.

Предпочитаете использовать maximum или max_, если вы действительно хотите что-то близкое к max.

1
ответ дан DevShark 19 August 2018 в 16:18
поделиться

Он работает:

In [1]: a = [1,2,3,4,5]

In [2]: max(a)
Out[2]: 5

Если вы где-то не скрывали max , все работает так, как ожидалось.

0
ответ дан user 19 August 2018 в 16:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: