Я хочу создать экземпляр класса и вызвать методы экземпляра без синтаксиса I.method
. Вместо этого я хочу назвать это просто method
. Это возможно? Если так, то как? Конкретный пример того, как я хочу это сделать, приведен ниже.
Мотивация для этого заключается в том, что в данном конкретном случае код будет выглядеть чище, а также просто быстрее писать. (warn()
пишется быстрее, чем logger.warn()
)
Я использую регистратор для регистрации ошибок и предупреждений:
import logging
import sys
logger = logging.getLogger('__main__') #only report main logs
handler = logging.StreamHandler(sys.stdout) #put to standout
logger.setLevel("DEBUG")
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.warn('This is a warning')
logger.info('this is just info')
Запись logger
(или как это было реализовано) раздражает.
Я хочу иметь возможность сделать что-то вроде этого:
import logging
import sys
logger = logging.getLogger('__main__') #only report main logs
handler = logging.StreamHandler(sys.stdout) #put to standout
logger.setLevel("DEBUG")
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
#Magic line of code
warn('This is a warning') #not logging.warn
info('this is just info')
Однако я не могу просто сделать что-то подобное
from logging import *
warn('this is a warning')
Так как это не будет создавать экземпляр класса журналирования так, как я хочу (например, только сообщать о главных журналах и печатать в sys.stdout.
Кто-нибудь знает, как это сделать?