
Nikolay
02.03.2017
15:47:53
хотя у нас не так давно был очень веселый срач

GNU/Docker
02.03.2017
15:49:05

Nikolay
02.03.2017
15:49:37
когда фронтендер на меня наезжал, мол, ‘ваш питон с бэкенда возвращает json с названиями полей типа “pizza_slices”, а на моей стороне падает линтер, потому что мне нужно response.pizzaSlices в камелкейсе'
и как результат он требовал переименовать поля в SQLAlchemy-модели и положить болт на pep8, потому что в js криво настроен парсинг json

Google

Danil
02.03.2017
15:50:20

Nikolay
02.03.2017
15:50:39

GNU/Docker
02.03.2017
15:51:36

Nikolay
02.03.2017
15:51:49

GNU/Docker
02.03.2017
15:52:27
Не очень что-то.

Danil
02.03.2017
15:52:45
он наркотики тяжелые юзает, по-моему
а догнал, он к объектам обращаться через snake_case не хочет. Что ему мешает преобразовывать ответ сервера на лету? Или он их тех, которые умеют только плакать? =)

Nikolay
02.03.2017
15:53:20
но в целом нет, конечно

GNU/Docker
02.03.2017
15:53:43
Ясно.

Nikolay
02.03.2017
15:54:42
но когда чувак просит забить на pep8, потому что у него в джаваскрипте ругается линтер - это весело

Google

Nikolay
02.03.2017
15:55:59
а еще один из WATов моих любимых починили в третьем питоне

Danil
02.03.2017
15:56:00

Nikolay
02.03.2017
15:56:11
это не мой фронтендщик был, просто чувак в чате
пытался мне таким образом доказать несостоятельность pep8

Danil
02.03.2017
15:57:15
мм.. так себе аргументация

Serge
02.03.2017
15:57:56
Так почему простое наследование с переопределением __init__ от frozenset не работает, а от list работает?
class mylist(list):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
mylist([1,2,3,4])
[1, 2, 3, 4]
конкретно в данном случае, можно сразу по ошибке отверждать одно - у родительского класса нет своего __init__ и срабатывает __init__ от object, который не умеет принимать никакие аргументы

Nikolay
02.03.2017
15:58:26
эту пургу починили в Python 3, но до сих пор весело спрашивать на собеседованиях

GNU/Docker
02.03.2017
15:59:15
О господи, ты ещё и собеседования проводишь?

Eugene
02.03.2017
15:59:40


Serge
02.03.2017
16:00:13
Думал, что это проще. Но пока наваял так. Есть ли тут проблемы?
# -*- coding: utf-8 -*-
import numbers
import decimal
def sum(*args):
"""Return sum numbers.
Args:
args: tuple of items.
Could be passed tuple of numbers or just set of numbers.
Returns:
sum of numbers.
"""
s = 0
for arg in args:
if isinstance(arg, tuple):
for i in arg:
if isinstance(i, numbers.Number):
s += i
else:
raise (TypeError("'{}' is not a tuple or a number".format(i)))
elif isinstance(arg, numbers.Number):
s += arg
else:
raise (TypeError("'{}' is not a tuple or a number".format(arg)))
return s
l = (5,0,5,1,9,1,5,0,5)
print sum(l)
print sum(5,0,5,1,9,1,5,0,5)
print sum(5,0,5,1,9,1,5,0,'this sucks')
при беглом взгляде, проверка на Number должна быть одна
ожидается интуитивно сначала приведение одного из возможного способа передачи аргументов к другому, а потом уже реализация суммы

Nikolay
02.03.2017
16:00:14

Serge
02.03.2017
16:01:07

Valery
02.03.2017
16:02:01

Nikolay
02.03.2017
16:02:21
в случае питона, имхо, объект с заданным __new__ - метакласс, потому что его инстансы - это классы

Eugene
02.03.2017
16:03:28

Google

Nikolay
02.03.2017
16:04:26

GNU/Docker
02.03.2017
16:04:40
Ооо.
И вот весь питоний имплисит оправдывается наличием документации:)

Serge
02.03.2017
16:04:45

Nikolay
02.03.2017
16:05:13

Serge
02.03.2017
16:05:19

GNU/Docker
02.03.2017
16:05:22
А вообще можно и в код посмотреть...

Nikolay
02.03.2017
16:05:51
но на практике с такими вещами не очень часто сталкиваешься
а когда сталкиваешься - есть, куда посмотреть

GNU/Docker
02.03.2017
16:06:34
Странная практика.

GNU/Docker
02.03.2017
16:06:51
Периодически на какое-нибудь новое говно натыкаюсь которое думал знаю как работает.

Nikolay
02.03.2017
16:07:07

Serge
02.03.2017
16:07:15
это вопрос терминологии
чего??? это вопрос в каком из двух класов это происходит:) object.__new__ и type.__new___ - вообще разные методы;)

Eugene
02.03.2017
16:08:12
Ну вот нужно мне свое неизменяемое множества, нафига мне интерфейс реализовывать со всеми этими операциями над множествами?

Serge
02.03.2017
16:08:13

Nikolay
02.03.2017
16:08:36

GNU/Docker
02.03.2017
16:08:45
Ууу.

Nikolay
02.03.2017
16:08:57
слушай, можно как угодно крутить терминологией

Google

GNU/Docker
02.03.2017
16:09:01
Самое плохое когда не замечаешь.

Nikolay
02.03.2017
16:09:11
я согласен, что может быть свой __new__, который делает что угодно вообще

Serge
02.03.2017
16:09:16

Nikolay
02.03.2017
16:09:25
но самый частый вариант его использования - это метаклассы

Serge
02.03.2017
16:09:51

Nikolay
02.03.2017
16:09:55
там даже проблема была не в том, что имена полей некрасивые

Serge
02.03.2017
16:10:20

Nikolay
02.03.2017
16:10:27
там проблема была в том, как он предлагал это решать

Admin
ERROR: S client not available

Serge
02.03.2017
16:10:47

Eugene
02.03.2017
16:10:49
А вот __slots__ это костыль или элегантное решение? :))

Serge
02.03.2017
16:11:14

Nikolay
02.03.2017
16:11:26
но можно его переопределить и сломать немного

Serge
02.03.2017
16:12:02

GNU/Docker
02.03.2017
16:12:05
блблб

Nikolay
02.03.2017
16:13:01
и обе реализации ее не нарушают

Google

Serge
02.03.2017
16:13:32

Nikolay
02.03.2017
16:13:34
если ты считаешь, то метод __new__ - это какая-то абстрактная херня, которую можно крутить, как хочешь - то ты неправ

Serge
02.03.2017
16:14:10

Nikolay
02.03.2017
16:14:24

Serge
02.03.2017
16:14:26

Eugene
02.03.2017
16:14:41
Ладно вам, само наличие метаклассов в языке где явное лучше неяаного - это троллинг

Nikolay
02.03.2017
16:14:55

GNU/Docker
02.03.2017
16:15:37
синглтон, мамка поттера, сингулярность, абстракции

Nikolay
02.03.2017
16:15:40
в том числе и неявную гадость

Roman
02.03.2017
16:15:58

Nikolay
02.03.2017
16:16:14

GNU/Docker
02.03.2017
16:16:37
Я плохо знаю твой набор слов.

Valery
02.03.2017
16:16:57

Serge
02.03.2017
16:17:25

Nikolay
02.03.2017
16:17:37

Serge
02.03.2017
16:17:38

GNU/Docker
02.03.2017
16:17:55

Nikolay
02.03.2017
16:17:58
type просто - такой объект, на котором замкнуто все

Serge
02.03.2017
16:19:08