@ru_python

Страница 2459 из 9768
Nikolay
10.03.2017
09:42:50
и я могу назвать одну пользу

такой класс не заманкипатчишь снаружи

а хотя тьфу, нет, вру

раз просто объект возвращается - с ним что угодно можно делать

Google
Pavel
10.03.2017
09:43:27
обычный декоратор, что тут такого?

Nikolay
10.03.2017
09:43:38
тогда да, это тупо декоратор

Eldar
10.03.2017
09:44:38
тогда да, это тупо декоратор
Декоратор для класса?

Nikolay
10.03.2017
09:44:51
Ilia
10.03.2017
09:44:56
Это вообще напоминает фабрику классов

Nikolay
10.03.2017
09:44:58
классы можно декорировать

87776
10.03.2017
09:45:37
а в питоне надо шарить в монадах?

YaOurTea
10.03.2017
09:45:45
Ilia
10.03.2017
09:45:52
Почему это декоратор для класса если он не принимает класс а только возвращает?

Nikolay
10.03.2017
09:45:56
а в питоне надо шарить в монадах?
ты опять на связь выходишь?

87776
10.03.2017
09:46:15
ты опять на связь выходишь?
чувачок, я в этом чяти подольше тебя сижу

Pavel
10.03.2017
09:46:17
def repeat(count): class Deco: def __init__(self, env): self.count = count self.env = env def __call__(self, *a, **kw): for _ in range(self.count): self.env() return Deco @repeat(5) def foo(): print('foo') foo() на выходе - 5 раз фу

Nikolay
10.03.2017
09:46:32
Google
Nikolay
10.03.2017
09:47:07
но вообще и классы, и функции - first class citizens

так что код валидный

Pavel
10.03.2017
09:47:22
Eldar
10.03.2017
09:48:08
а где исходники gym.Wrapper?
https://github.com/openai/gym/blob/master/gym/wrappers/frame_skipping.py

Pavel
10.03.2017
09:48:10
ну и да, двавайте читать докстринги. Generic common frame skipping wrapper Will perform action for `x` additional steps

Eldar
10.03.2017
09:49:04
Что значит фрейм в данном случае?

Ilia
10.03.2017
09:49:54
а где исходники gym.Wrapper?
https://github.com/openai/gym/blob/master/gym/core.py#L244

Pavel
10.03.2017
09:51:24
Что значит фрейм в данном случае?
надо спрашивать тех, кто работает с этой библиотекой.

Nikolay
10.03.2017
09:52:35
там два варианта - либо они очень крутые, либо очень тупые

фрейм тут, как я понимаю - это фрейм на уровне выполнения кода интерпретатором

только что они скипают, засунув один в другой - не очень понятно

Eldar
10.03.2017
09:53:08
Тогда я ваще запутался. Какой общий кейс использования для class A: class B: pass return B

Nikolay
10.03.2017
09:53:53
хотя такие вещии лучше через метаклассы делать

Eldar
10.03.2017
09:54:36
не класс A, а def A, внимательнее
А тогды ясно. Не внимательно код почитал)

Pavel
10.03.2017
09:56:01
Вот тут декоратор потому что есть __call__
декатор можно и без __call__ запилить. ТАм у них в коде какая-то возня с def step() идёт, вполне можно мой код переписать, запуская foo.step()

Google
Pavel
10.03.2017
10:38:57
Как у вас на вакансии смотрят? Как на рекламу?
высокомерно: если вилки з/п нет, то с плохо скрытым презрением, если вилка есть - то с чувством гордости за свои 300к/день.

сейчас артём допишет...

Artem
10.03.2017
10:39:52
давай

Houston
10.03.2017
10:40:43
Направление не самое прямолинейное, может и найдется кто. В общем, ваше право

#job #вакансия #vacancy #tooling #configuration_manager Вакансия: Configuration Manager / Tooling Engineer Компания: Align Technology, Inc (Москва) Тип занятости: полная Оплата: 100 000 - 130 000 net (на руки) Задачи: команда занимается внедрением инструментов для разработки ПО: от обеспечения высокодоступного Docker API до построения процесса continuous delivery для приложений IOS&Android. Заниматься нужно текущим стеком систем и соотвествующей инфраструктуры (Git, JIRA, Bamboo, Confluence, Fisheye, HPQC, Sonar, Incredibuild, etc) и разработкой инструментов, фреймворков и решений для развития Continuous Integration, Continuous Delivery и в целом автоматизации SDLC в компании. Python, Ruby, Bash - основные языки для автоматизации. Windows 40%, Enterprise Linux 60%. Git — система контроля версий. Continuous Integration — Bamboo. Бинарный репозиторий - Artifactory. Chef используется для деплойментов и управления конфигурациями. Инфраструктура - AWS, VMware, Docker Требования: 2+ года опыта работы инженером, тестировщиком или администратором систем автоматизации цикла разработки ПО; Более 1 года администрирования системы на базе Linux; Уметь эффективно использовать как минимум один из следующих языков: Ruby, Python, Java, Groovy, Go, Shell Scripting (Powershell, BASH); Уровень английского языка: intermediate. Условия работы: Глобальная команда — США и Россия; Годовые бонусы по итогам работы, ДМС и страхование жизни; Бесплатное питание; Английский и испанский в офисе и др. Контакты для связи: Внутренний HR — Катерина Кушнарева ( @katerina_kushnareva ) ekushnareva@aligntech.com

Igor
10.03.2017
10:45:44
*упивается чувством гордости за отсутствие необходимости сисадминить винды на целых 40%*

arisu
10.03.2017
10:55:49
мне плевать на всех

возвращаю что хочу

Ruslan
10.03.2017
10:56:49
а почему нет?
декоратор

Archer
10.03.2017
10:57:31
*упивается чувством гордости за отсутствие необходимости сисадминить винды на целых 40%*
http://img1.joyreactor.cc/pics/comment/%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D1%81%D0%B0%D0%BC%D0%BE%D0%BE%D1%86%D0%B5%D0%BD%D0%BA%D0%B0-%D0%B4%D0%BB%D0%B8%D0%BD%D0%BD%D0%BE%D0%BF%D0%BE%D1%81%D1%82-%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%B5%D0%BB-%D1%81%D0%B0%D0%BC-1610767.jpeg

Nikolay
10.03.2017
11:07:44
декоратор
где декоратор?



Igor
10.03.2017
11:08:34
ахахахах

Ruslan
10.03.2017
11:08:51
SkipWrapper

Lulz
10.03.2017
11:19:11
ухахах

Ivan
10.03.2017
11:26:15
Всем привет :) Видимо, я что-то не понимаю. Вот такой момент: http://pastebin.com/BM5YeReE

arisu
10.03.2017
11:27:00
какой?

Lulz
10.03.2017
11:27:15
все перешли?0)0)

Google
Ivan
10.03.2017
11:28:18
Короч, почему, когда дебажу, у меня в B.get_defaults у супера нет аттрибута такого

как я понял, он должен с учётом cls мне прокси строить, и до А.defaults дать добраться.

или в classmethod super резолвит как-то по-другому? В общем, такие дела :)

Igor
10.03.2017
11:35:04
видимо, super в defaults mixin резолвит относительно defaults mixin и если хочется получить смерженный дикт в B, то надо super(B, cls) в самом B написать, чтоб до А добраться

arisu
10.03.2017
11:42:28
ну правильно

Admin
ERROR: S client not available

arisu
10.03.2017
11:42:31
в Base его и нету

для такого наследования цепочкой мро будет B, A, DefaultsMixin, Base

для DefaulsMixin супером будет Base

отнаследуйтесь в B от миксина тоже

Ivan
10.03.2017
11:43:50
То есть super(DefaultsMixin, B) отдаст не A, DefaultsMixin, Base?

arisu
10.03.2017
11:43:53
чтобы было B, DefaultsMixin, A, Base

Igor
10.03.2017
11:43:57
не, там Base ни на что не влияет class Base(object): pass class DefaultsMixin(object): @classmethod def get_defaults(cls): sup = super(DefaultsMixin, cls) print('cls:', cls) print('sup:', sup) print('cls.defaults', getattr(cls, 'defaults', None)) print('sup.defaults', getattr(sup, 'defaults', None)) class A(DefaultsMixin, Base): defaults = ( ('a1', 'A'), ('a2', 'AA') ) class B(A): defaults = ( ('a2', 'BB'), ('b1', 'B') )

вроде

Ivan
10.03.2017
11:44:02
тогда ругается на MRO

Igor
10.03.2017
11:44:03
In [18]: A.get_defaults() ('cls:', <class '__main__.A'>) ('sup:', <super: <class 'DefaultsMixin'>, <A object>>) ('cls.defaults', (('a1', 'A'), ('a2', 'AA'))) ('sup.defaults', None) In [19]: B.get_defaults() ('cls:', <class '__main__.B'>) ('sup:', <super: <class 'DefaultsMixin'>, <B object>>) ('cls.defaults', (('a2', 'BB'), ('b1', 'B'))) ('sup.defaults', None)

arisu
10.03.2017
11:45:09
»> class Base(object): pass »> class DefaultsMixin(object): pass »> class A(DefaultsMixin, Base): pass »> class B(A): pass »> B.mro() [<class 'B'>, <class 'A'>, <class 'DefaultsMixin'>, <class 'Base'>, <type 'object'>]

а какая цель то? получить объединение всех defaults?

почему бы просто не написать в каждом классе метод get_defaults

Google
Ivan
10.03.2017
11:47:48
ага, коммент в конце пастбина :)

arisu
10.03.2017
11:47:59
а в подклассах их вызвать по цепочке

Ivan
10.03.2017
11:49:00
Написать в каждом классе - можно, но тогда везде будет реализация во многом дублироваться. объявляем свои, берём копию родительских, апдейтим

Igor
10.03.2017
11:50:47
а извне где-нибудь хранить? хоть в отдельном модуле

фигню сказал, сорри

Ivan
10.03.2017
11:53:29
да воркэраунд придумать можно, можно объявить функцию merge_defaults(...) и в классах просто в B defaults = merge_defaults(A.get_defaults(), (...свои ..) )

явно

наверное так и сделаю. Просто было интересно. Я всегда думал, что super рассматривает всю цепочку наследования, просто умело понимает, куда уже заходил, а куда ещё нет

arisu
10.03.2017
11:56:59
лолнет

он тупой как пробка

Ivan
10.03.2017
11:57:11
Может я что-то перепутал, когда разбирался с super в Scala, и решил, в python видимо так же. Надо будет попробовать

Alexandr
10.03.2017
11:59:30
Ребят есть у кого времечко свободное? Задачку одну надо на сайте выполнить

Nikolay
10.03.2017
11:59:45
в scala самый мутный после питона момент - это yield

он там какой-то непацанский

Alex
10.03.2017
12:00:04
есть ли смысл использовать scala?

Nikolay
10.03.2017
12:00:23
есть ли смысл использовать scala?
есть ли смысл использовать %languagename%?

Страница 2459 из 9768