TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #77 · 29 апр.

Каждый модуль в Python имеет атрибут ˍˍnameˍˍ. В него записывается строка, содержащая полное имя модуля. Например: >>> from my_package import my_module >>> print(my_module.__name__) 'my_package.my_module' Очень удобно для логгинга когда в имя логгера требуется записать имя модуля, в котором происходят события лога. Но однажды мне потребовалось создать логгер не для модуля в целом, а для отдельной функции. Что в этом случае можно сделать? Такой объект как функция тоже имеет атрибут ˍˍnameˍˍ >>> class MyClass: >>> def func(self): >>> pass >>> print(MyClass.func.__name__) 'func' Итого нам следует собрать полное имя таким образом: >>> full_name = '.'.join([__name__, MyClass.__name__, MyClass.func.__name__]) >>> print(full_name) 'my_package.my_module.MyClass.func' А что если класс вложен в другой класс? >>> class MyClass: >>> class SubClass: >>> def func(self): >>> pass >>> full_name = '.'.join([__name__, MyClass.__name__, MyClass.SubClass.__name__, MyClass.SubClass.func.__name__]) >>> print(full_name) 'my_package.my_module.MyClass.SubClass.func' А что если вложений несколько? >>> class MyClass: >>> class SubClass1: >>> class SubClass2: >>> def func(self): >>> pass Даже не буду писать пример получения имени 😭. А что если функция не из этого класса а унаследована и вы работаете с внешней библиотекой? >>> from somewhere.something import OtherClass >>> class MyClass2(OtherClass): >>> pass Cтрашно подумать как нам достать настоящее "полное имя" функции! А если там динамическое определение наследования или метаклассы? Вообще можно забить на решение и придумать другой способ 😵 На помощь приходит PEP3155 и его имплементация "Qualified name". Всё очень просто, начиная с Python 3.3 классы и функции имеют атрибут ˍˍqualnameˍˍ, который и содержит полное или "честное" или "квалифицированное" имя объекта. Именно в него уже записан готовый полный адрес объекта. И теперь даже такая конструкция сработает правильно: >>> # some_module.py >>> >>> class OtherClass: >>> class SubClass1: >>> class SubClass2: >>> def func(self): >>> pass >>> >>> # my_module.py >>> from some_module import OtherClass >>> class FinalClass(OtherClass.SubClass1.SubClass2): >>> pass >>> >>> full_name = '.'.join([__name__, FinalClass.func.__qualname__]) 'my_package.my_module.OtherClass.SubClass1.SubClass2.func' Тут стоит заметить, что если функция находится не в текущем модуле а откуда-то импортирована (как в моём примере) то собирать имя с локальным атрибутом ˍˍnameˍˍ уже не имеет особого смысла. Тогда лучше использовать имя модуля исходного класса: >>> full_name = '.'.join([FinalClass.__module__, FinalClass.func.__qualname__]) 'some_module.OtherClass.SubClass1.SubClass2.func' #pep

Hashtags

Резултати

Пронајдени 163 слични објави

Пребарај: #city

当前筛选 #city清除筛选
Pro Analysis

@proanalysistrader · Post #28555 · 18.03.2025 г., 08:15

#CITY/USDT analysis : #CITY has broken out and retested the 200 Exponential Moving Average (EMA). It is currently consolidating above the 200 EMA. The price is expected to bounce back from this level and resume its upward momentum to test higher levels. TF : 1H Entry : $1.107 Target : $1.160 SL : $1.075

Hashtags

Pro Analysis

@proanalysistrader · Post #28501 · 26.02.2025 г., 11:50

#CITY/USDT analysis : #CITY is currently in a downtrend, establishing new lows. The price is anticipated to retest the resistance zone before potentially reversing from there to resume bearish momentum and test lower levels. TF : 4h Entry : $1.220 Target : $1.083 SL : $1.300

Hashtags

Pro Analysis

@proanalysistrader · Post #28384 · 12.01.2025 г., 11:29

#CITY/USDT analysis : #CITY has broken below the support levels, forming lower lows (LLs) and lower highs (LHs) while trading below the 200 EMA. The price is expected to maintain its bearish momentum and test lower levels. TF : 2H Entry : $1.826 Target : $1.715 SL : $1.903

Hashtags

Pro Analysis

@proanalysistrader · Post #27908 · 06.09.2024 г., 14:16

#CITY/USDT analysis : #CITY is presently in a downtrend, trading below the 200 EMA. The price is currently consolidating above support levels. It is expected to be breached by the price soon and will continue its bearish momentum on lower time frames to test previous lows. Wait for a break of the $1.945 level to initiate a short position. TF : 1H Entry : $1.945 Target : $1.853 SL : $2.005

Hashtags

123•••10•••1314
ПретходнаСтраница 1 од 14Следна