Email or username:

Password:

Forgot your password?
Top-level
Joinny Hash

@cauf а го дискасс за области видимости и формат импортов.

У меня есть отдельный enums.py в проектах и порой происходит микрохоливар/война правок с коллегой/самим собой (sic).

Ей больше по душе

from kekeke import enums

И потом использовать везде enums.EventType.universal

Мне больше заходит

from kekeke.enums import EventType

Даже если это доходит до

from .. import (
EventType,
CustomerStatus,
RandomName
)

И требует правки импортов при вводе новых enum. У тебя есть здесь вкусовщина?

3 comments
cauf 🇷🇺

@strizhechenko Ода, она у меня для вас есть!

На нескольких последних проектах сталкивался с тем, что есть модули с сотнями классов. А в текщем модуле тебе нужны всего 5-7 классов. И вот тогда мне куда проще написать

from kekeke import (
class1,
class2,
...
classN,
)

чем каждый раз копаться в сотнях предлоежний от этого модуля.

Ну и еще вишенкой на тортике.

Я бы руки отрубал тем, кто додумался ввести относительные импорты глубиной более 1 уровня. У меня в практике встречались вот такие перлы

from ..... import kekeke

и у тебя очень мало шансов понять, откуда именно это импортировано, если только не открывать файловый менеджер и не считать гребанные папочки и точечки.

@strizhechenko Ода, она у меня для вас есть!

На нескольких последних проектах сталкивался с тем, что есть модули с сотнями классов. А в текщем модуле тебе нужны всего 5-7 классов. И вот тогда мне куда проще написать

from kekeke import (
class1,
class2,
...
classN,
)

чем каждый раз копаться в сотнях предлоежний от этого модуля.

cauf 🇷🇺

@strizhechenko Кстати, мне система импорта питона не очень нравится из-за того, что для каждого вложенного подпакета надо прописывать отдельную цепочку импортов. То есть

from pack1.pack2.pack3.module1 import class1

а если тебе надо импортнуть из соседнего модуля, то будь добр написать всю конструкцию заново

from pack1.pack2.pack3.module2 import class2

Как мне кажется, можно было бы ввести что-то типа группировки импортов. Например так:

from pack1.pack2.pack3 (
from module1 import class1,
from module2 import class2,
)

Но пока об этом приходится только мечтать

@strizhechenko Кстати, мне система импорта питона не очень нравится из-за того, что для каждого вложенного подпакета надо прописывать отдельную цепочку импортов. То есть

from pack1.pack2.pack3.module1 import class1

а если тебе надо импортнуть из соседнего модуля, то будь добр написать всю конструкцию заново

Joinny Hash

@cauf простите
""" yaml
from common
from enum
import EventType, CustomerStatus
from db
import models
from manager import atomic
"""

Go Up