
GNU/Docker
02.03.2017
16:19:51

Serge
02.03.2017
16:20:00
и вот еще
>>> issubclass(object, type)
False
>>> issubclass(type, object)
True
>>> type(type)
<class 'type'>
>>> type(object)
<class 'type'>

Nikolay
02.03.2017
16:20:04

Google

Serge
02.03.2017
16:20:38
там столько всего гвоздями в сях прибито, на этом уровне сложно говорить терминами класс/объект, потому что эти структуры их и определяют

Nikolay
02.03.2017
16:20:48
там в конце PyTypeObject, который указывает сам на себя

Serge
02.03.2017
16:21:38
так вот. мы приходим к тому, что type.__new__ и object.__new__ - это конструкции языка, которые нужны для разного и у них по разному прибиты сигнатуры

Nikolay
02.03.2017
16:22:16

Serge
02.03.2017
16:22:33
а еще к тому, что метакласс - это такой наследник type (кстати не обязательно вообще-то), у которого __new__ вызывается с определнной, прибитой гвоздями сигнатурой

Nikolay
02.03.2017
16:22:53
а в остальном согласен

Serge
02.03.2017
16:24:50
погоди, в чем предназначение object.__new__?
я вижу куда ты клонишь, к тому что он собирает инстанс класса, а в type он собирает класс, который типа инстанс метакласса.
ну так вот последнее - это популярное заблуждение, всё не совсем так:)

Nikolay
02.03.2017
16:25:22
но вообще раньше было путаницы еще больше - когда были classobj
сейчас все свели к циклу между object и type, в new-style классах

Serge
02.03.2017
16:26:05
метакласс - это структура, которая берет на себя работу type по сбору класса - да, но это лишь утилитарная работа, никакой особенной смысловой связи между метаклассом и классом нет, они не шарят методы, например, в отличии от класса и инстанса. это разные структуры совсем

Google

Nikolay
02.03.2017
16:26:36
в терминах реализации этого в питоне - не очень)

Serge
02.03.2017
16:27:22
поэтому type.__new__ - это совсем не то, что object.__new__, просто выбрали этот мето для этой работы из-за отдаленной похожести работы;)

Nikolay
02.03.2017
16:28:17
я писал чисто про питон
чисто про питон - у тебя есть просто два метода, __new__ и __init__, которые зовутся друг за другом при обращении к объекту по скобочкам :)

Serge
02.03.2017
16:28:29

Nikolay
02.03.2017
16:28:31
первый контролирует создание инстанса, второй - "конструктор"

Serge
02.03.2017
16:28:55

Nikolay
02.03.2017
16:29:01

Serge
02.03.2017
16:29:15

Nikolay
02.03.2017
16:29:29
ладно
смотри
формально разница какая - у тебя object.__new__ должен возвращать инстанс объекта, а type.__new__ - инстанс typeobject, то есть класса
верно?

Serge
02.03.2017
16:30:16

Nikolay
02.03.2017
16:30:57

Serge
02.03.2017
16:32:32

Google

Nikolay
02.03.2017
16:32:33
ну... предполагается, что он это будет делать
именно, предполагается. Точно также предполагается, что если ты описываешь руками класс с методом __new__ - он будет в абсолютном большинстве случаев использоваться, как метакласс для какого-то другого класса

Serge
02.03.2017
16:32:48

Nikolay
02.03.2017
16:33:12
это нарушает всю логику
согласен, Гвидо ввел неоднозначность двумя методами :)

Serge
02.03.2017
16:33:52

Nikolay
02.03.2017
16:34:39

Serge
02.03.2017
16:34:54

Nikolay
02.03.2017
16:35:16

Serge
02.03.2017
16:35:38

Nikolay
02.03.2017
16:35:56

Nikolay
02.03.2017
16:36:03
вся проблема в динамичности питона))

Serge
02.03.2017
16:36:07

Nikolay
02.03.2017
16:36:34

Serge
02.03.2017
16:36:34

Nikolay
02.03.2017
16:36:57

Serge
02.03.2017
16:37:06

Admin
ERROR: S client not available

Nikolay
02.03.2017
16:37:43

Google

Serge
02.03.2017
16:37:49
согласен
ну так вот. извращаться можно сколько угодно. но просто определение __new__ в наследнике object не делает его метаклассом

Nikolay
02.03.2017
16:38:53

Serge
02.03.2017
16:38:57
все инструменты, которыми ты не владеешь, кажутся тебе магией.

Nikolay
02.03.2017
16:39:30
я на питоне много лет пишу уже и знаю, как оно работает, просто иногда люблю упрощать
просто потому что питоновская реализация действительно содержит много неоднозначностей
и двояких трактовок

Serge
02.03.2017
16:40:06

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

b0g3r
02.03.2017
18:25:24
Вечера!
Ищу производственную летнюю практику с Python'ом в СПб
О себе:
Студент 3 курса IT-специальности в техноложке
Умею в python (django, pyqt5) - github.com/b0g3r
Немного умею в Java и C++
Английский - pre-intermediate (поднимаю уровень сейчас, может к лету уже буду без пре)
Почта: boger.dmitriy@gmail.com
Буду также рад любым советам и предложениям куда обратить свой взор и куда написать :)

Dmitry
02.03.2017
18:28:03
вот, это чёткая селф-презентация. надо остальным ставить в пример )

Serge
02.03.2017
18:29:01

b0g3r
02.03.2017
18:29:39
Скорее не хочу формальную стандартную вузовскую летнюю практику

Sergey
02.03.2017
18:53:50
Эх, где такой чатик был год назад, когда у меня была летняя практика на носу :с

Sergey
02.03.2017
18:58:24

Google

Serge
02.03.2017
19:03:00
@lig11, а когда ДР чата?
про чат не скажу. официально мы считаем ДР этой инкарнации сообщества по данным вот тут https://www.meetup.com/spbpython/
Founded Jan 23, 2015
а вот и про чатик нашлось https://plus.google.com/+SergeMatveenko/posts/Ynn5oudTpmU
оно еще раньше O_O внезапно

Sergey
02.03.2017
19:08:25

Serge
02.03.2017
19:08:29
а вот первый пост на spbpython.guru
https://plus.google.com/+MaksimLeonov/posts/hC5exX2U9jR