В отличие от других ответов я не хочу говорить о том, что не так с Singletons, но чтобы показать вам, насколько они сильны и ужасны при правильном использовании!
MyModel myModel = Factory.inject(MyModel.class);
. Вы можете сопоставить MyModel
с TestMyModel
классом, который наследует его, везде, где MyModel
будет введен, вы получите TestMyModel
instread. Как я сказал в названии singleton, речь идет не о одном экземпляре.
У вас где-то в вашем коде определена переменная с именем max
max = something
Поскольку:
a = [1,2,3,4,5]
print max(a)
Выводит 5
и отлично работает.
Ошибка ясна: вы переопределили max как int в коде. Или вы используете чужой код, который это делает. Таким образом, у вас, вероятно, есть что-то вроде этого где-то
max = 4
Вот почему очень сложно использовать встроенные имена в качестве имен переменных.
Предпочитаете использовать maximum
или max_
, если вы действительно хотите что-то близкое к max
.
Он работает:
In [1]: a = [1,2,3,4,5]
In [2]: max(a)
Out[2]: 5
Если вы где-то не скрывали max
, все работает так, как ожидалось.