
?
25.01.2019
13:47:13
Помимо __doc__

Ilya
25.01.2019
13:47:17

Andrii [R11]
25.01.2019
13:48:04

Владимир
25.01.2019
13:48:13

Google

Alex
25.01.2019
13:48:14

Ilya
25.01.2019
13:48:25

?
25.01.2019
13:48:50

Alex
25.01.2019
13:49:06
ага

Владимир
25.01.2019
13:49:17

Ilya
25.01.2019
13:49:22

?
25.01.2019
13:49:43
ага
Что-то еще существует? Не 1 пример, в целом хотелось бы разобрать эту тему

Tishka17
25.01.2019
13:50:08
да хоть print(“hello”) туда можено написать

Alex
25.01.2019
13:51:08
> да хоть print(“hello”) туда можено написать
да, код в class scope просто исполняется при знагрузке класса.

?
25.01.2019
13:51:13

Alex
25.01.2019
13:51:14
но так делат ьне надо.

Google

Alex
25.01.2019
13:51:41
почитай про порядок поиска аттрибутов объекта в python

?
25.01.2019
13:52:27


Donaudampf
25.01.2019
13:52:42
вот ещё из интересного
The creation of a class consists of two big steps. First, the class body is evaluated, just like any function body. Second, the resulted namespace (the one that is returned by locals()) is used by a metaclass (type by default) to construct an actual class object.
class Meta(type):
def __new__(meta, name, bases, ns):
print(ns)
return super().__new__(
meta, name,
bases, ns
)
class Foo(metaclass=Meta):
B = 2
The above code prints {'__module__': '__main__', '__qualname__': 'Foo', 'B': 3}.
Obviously, if you do something like B = 2; B = 3, then the metaclass only knows about B = 3, since only that value is in ns. This limitation is based on the fact, that a metaclass works after the body evaluation.
However, you can interfere in the evaluation by providing custom namespace. By default, a simple dictionary is used but you can provide a custom dictionary-like object using the metaclass __prepare__ method.
class CustomNamespace(dict):
def __setitem__(self, key, value):
print(f'{key} -> {value}')
return super().__setitem__(key, value)
class Meta(type):
def __new__(meta, name, bases, ns):
return super().__new__(
meta, name,
bases, ns
)
@classmethod
def __prepare__(metacls, cls, bases):
return CustomNamespace()
class Foo(metaclass=Meta):
B = 2
B = 3
The output is the following:
__module__ -> __main__
__qualname__ -> Foo
B -> 2
B -> 3
And this is how enum.Enum is protected from duplicates.


?
25.01.2019
13:55:02
The creation of a class consists of two big steps. First, the class body is evaluated, just like any function body. Second, the resulted namespace (the one that is returned by locals()) is used by a metaclass (type by default) to construct an actual class object.
class Meta(type):
def __new__(meta, name, bases, ns):
print(ns)
return super().__new__(
meta, name,
bases, ns
)
class Foo(metaclass=Meta):
B = 2
The above code prints {'__module__': '__main__', '__qualname__': 'Foo', 'B': 3}.
Obviously, if you do something like B = 2; B = 3, then the metaclass only knows about B = 3, since only that value is in ns. This limitation is based on the fact, that a metaclass works after the body evaluation.
However, you can interfere in the evaluation by providing custom namespace. By default, a simple dictionary is used but you can provide a custom dictionary-like object using the metaclass __prepare__ method.
class CustomNamespace(dict):
def __setitem__(self, key, value):
print(f'{key} -> {value}')
return super().__setitem__(key, value)
class Meta(type):
def __new__(meta, name, bases, ns):
return super().__new__(
meta, name,
bases, ns
)
@classmethod
def __prepare__(metacls, cls, bases):
return CustomNamespace()
class Foo(metaclass=Meta):
B = 2
B = 3
The output is the following:
__module__ -> __main__
__qualname__ -> Foo
B -> 2
B -> 3
And this is how enum.Enum is protected from duplicates.
Это из статьи, что ты отправил выше?


Donaudampf
25.01.2019
13:55:14
одно - дескрипторы, второе - метаклассы
разумеется, в свой рабочий код вот это всё тащить не стоит, но посмотреть и разобраться - интересно

Robot
25.01.2019
13:57:47

Alex
25.01.2019
13:57:50
Хорошо
https://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/#object-attribute-lookup

Robot
25.01.2019
13:58:30
https://habr.com/ru/post/87327/ вот тут я дескриптор на практике использую, очень удобно
правда картинки в статье похерились

?
25.01.2019
13:58:44

Donaudampf
25.01.2019
13:59:19
почему нет
если это хорошо решает какую-то задачу - пожалуйста

Robot
25.01.2019
13:59:27
метаклассы я использовал один раз, когда сделал для джанги модели с полями на несколких языках

Владимир
25.01.2019
13:59:41

Donaudampf
25.01.2019
14:00:07
вообще я про метаклассы скорее

Vitalii
25.01.2019
14:04:57
кто нибудь имеет опыт работаы с системой Odoo ?

Terminator
25.01.2019
14:10:15
@infinity_coder будет жить. Поприветствуем!

Google

Vitaly
25.01.2019
14:11:23
Как сделать автоматическое изменение размеров виджетов, используя tkinter?

Владимир
25.01.2019
14:12:33
Почему Ткинтер? Почему не Qt или WxWidgets?

Vitaly
25.01.2019
14:13:43

Sergey
25.01.2019
14:14:12
?
где root это основной фрейм
ну и там надо чуток повозится с самой структурой гридов, чтобы оно красиво ресайзилось

Vitaly
25.01.2019
14:15:11
Они по умолчанию стоят, разве нет?
Это лишь включает возможность изменять размер главного окна

Terminator
25.01.2019
14:16:30
Maksim Molodtsov будет жить. Поприветствуем!

Sergey
25.01.2019
14:17:01

Maksim
25.01.2019
14:17:05
Нужно написать цикл на выполнение нескольких команд при работе с таблицами в pandas

Terminator
25.01.2019
14:18:50
@daoware будет жить. Поприветствуем!

oneonwar
25.01.2019
14:19:14
Э
Кто писал эту болванку
Чё он молчит(

Igor
25.01.2019
14:19:58
хз

Admin
ERROR: S client not available

Google

Anton
25.01.2019
14:31:17
Не туда, сорян

Vyacheslav
25.01.2019
14:31:24
Привет. Может немного не по теме, но может кто-нибудь подскажет расширение для VScode, или стандартную функцию, которая наводит порядок в html файле (отступы, и.т.п.) ?

Кирил
25.01.2019
14:32:51
э

Eldar
25.01.2019
14:33:26
войсы в чате не приветсвуются

Христофор Маврикиевич
25.01.2019
14:34:16
у клавиатуры есть функция голосового ввода
я слышал

Eldar
25.01.2019
14:37:22
э
я ограничил тебе возможности в этом чате, если ты с первого раза этого не понял

Игорь
25.01.2019
14:37:35
Вопрос:
При перезагрузке сервера апач2 выплевывалась следующая ошибка:
File "/usr/local/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 337: ordinal not in range(128)
Суть такая. При старте сервера Джанго в память сразу закачиваются в скрипте несколько файлов с большими sql запросами, что бы потом из исппользовать в скриптах.
Код загрузки следующий:
with open(sql) as data:
sql_string = data.read()
Ошибка исчезает, если исправить код на
with open(sql, encoding='utf-8') as data:
sql_string = data.read()
Машина Debian 9
Кто скажет почему это происходит?
При этом разработочный сервер Джанго стартует нормально

Tishka17
25.01.2019
14:38:17
Выкинь апач, поставь uwsgi + nginx
Это не к проблеме, а вообще

Игорь
25.01.2019
14:39:21

Tishka17
25.01.2019
14:39:35
Вероятно почему-то апач не подхватывает системную локаль

Terminator
25.01.2019
14:53:32
@AminaHidzhina будет жить. Поприветствуем!

Алексей
25.01.2019
14:54:29
Спс)
заебала эта паста уже. пока ты всё это выучишь нахуй уже не надо будет

slair
25.01.2019
14:59:18
обычно учат искать и находить инфу

rm
25.01.2019
15:17:25
Можно ли как-то вызвать респонс из функции ,а не возвращать обьект респонса?
Джанго-рест

Google

Tigran
25.01.2019
15:17:58
зачем?

Tishka17
25.01.2019
15:18:33
ничо не понял

rm
25.01.2019
15:18:42
Хочу разбить одну большую апи на отдельные функции

Tishka17
25.01.2019
15:18:48
разбивай

Tigran
25.01.2019
15:19:18
ну создай какой-нибудь объект, который будет накапливать результаты, и прокидывай его везде, а на верхнем уровне верни респонс из его содержимого

Владимир
25.01.2019
15:25:09