«» «
? 1, порядок выполнения новых методов и метода инициализации выполняется
A: Первое внедрение новых методов, открыть память, создавать объекты, а затем выполнить инициализации
» «»
# класс Человека ():
# DEF __init __ (Self, имя, возраст) :
# self.name = имя
# self.age Age =
# Print ( "Я метод инициализации.")
#
# DEF __new __ (CLS, * арг, ** kwargs):
# Print ( "Я новый метод")
# возвращение объекта .__ новый новый __ (CLS)
#
# P = Человек ( "Лили", 18)
# P2 = Человек ( "Люси", 20)
# Печать (ID (P), ID (P2))
'' '
2, Call метод вызывается в какое время?
A:Когда объект () вызывается , когда
«» '
#класс Человек ():
# DEF __init __ (Self):
# Print ( "Я метод инициализации.")
#
# DEF __call __ (Self):
# Print ( "Я называю метод")
#
# Р- = Человек ()
# р- ()
«» « »
3, Пожалуйста , напишите класс, добавить статический атрибут для класса с отражением
«» '
# класс Человека ():
# Pass
#
# SetAttr (лицо, „Возраст“, 30)
# Печать ( person.age)
«» «
4, добавьте имя атрибута для объекта на название класса отражения, ваше имя
» «»
# класс Человек ():
# Передача
#
# р = Person ()
#SetAttr (Человек, "Возраст", 30)
# SetAttr (P, "имя", "Сяо Yanyan")
# Печать (person.age)
# Печать (p.name)
'' '
. 5, используя новый метод для достижения одноточечно
'' '
# класс одноэлементный ():
# __instance = None цель # хранение
#
# DEF метод __init __ (Self):
# (. "Я инициализировать метод") Печать
#
# DEF __new __ (CLS * арг, ** kwargs):
# Если не Singleton .__ примера: # не определить , является ли None
# Singleton экземпляра = Object .__ .__ нового нового __ (ЦБС) # создать объекты и переменный класс обновления
# возврата Singleton.__instance
#
# s = Синглтон ()
# S1 = одноплодный ()
# Печать (ID (S), ID (S1))
'' '
6, проверка согласованности два файлов.
' ''
# Импорта hashlib
#
# DEF get_file_md5 (File):
# "" " возвращает содержимое файла из строки "" после того, как зашифрованный md5 "
# OBJ = hashlib.md5 ()
# obj.update (Open (файл) .read (). закодировать (" UTF - 8 . «))
# возвращение obj.hexdigest ()
#
# IF get_file_md5 ( "file1.py") == get_file_md5 ( "file2.py"):
# Print ( " в соответствии с содержанием двух файлов")
# еще:
# "содержимое двух файлов , не совместимы" Print ( )
'' '
7, шифртекст соль Войти
'' '
# Import hashlib
#
# Имя пользователя = ""
# пароль = ""
#
# класс Auth ():
# __salt = "Кто сделал дюйм травы, сообщили в квартирах." Соль строка #
#
# DEF get_md5_str (Self, str1):
# "" "md5 шифрование" ""
# md5_obj = hashlib.md5 (Self .__ salt.encode ( "UTF - 8 . "))
# md5_obj.update (str1.encode ( "UTF - 8 . "))
# возвращение md5_obj.hexdigest ()
#
# DEF Регистр (Self):
# "" "Регистрация пользователя" ""
# это время 1:
# имя = в поле ВХОД ( «Регистр имя пользователя:«) .strip ()
# в поле ВХОД = PWD ( "Регистр Пароль:") .strip ()
# Если имя = "" и PWD =! "!":
# , Ltd. Бесплатный Регистрация логин, пароль
# имя = имя
# пароль = self.get_md5_str (PWD)
# Print ( " [% s] успешно зарегистрирован "% имя пользователя)
# возвращающие
# еще:
# Print (" имя пользователя и пароль не может быть пустым ").
#
# DEF Логин (Self):
# " "" Логин пользователя "" "
# это время 1:
# имя = входе ( «поле Логин имя пользователя:«) .strip ()
# Название == IF "":
# (. Print "Имя пользователя не может быть пустым")
# Продолжить
# PWD = на вход ( далее "Логин Пароль") .strip ()
# IF PWD == "":
# Print ( «Пароль не может опорожнить ")
# Продолжить
#
# Если имя пользователя == == имя self.get_md5_str и пароль (PWD):
# Print (" [% S] успешно Войти "% имя).
# возвращающие
# еще:
# Print (" имя пользователя или пароль неверен ".)
# Вернуться Ложные
#
#
#AUTH = Auth () # создать объект
# auth.register () # регистрация
# auth.login () # вход
«» «
Настройка журнала 8, полный и может либо выводить на экран в выходной файл
» «»
Импорт протоколирования
из протоколируемого Импорта обработчиков
класса Logger (Object):
level_relations = {
' Debug ' : logging.DEBUG,
' информация ' : logging.info,
' предупреждение ' : logging.WARNING,
' ошибка ' : logging.error,
' крит ': Logging.CRITICAL
} # лог отображение уровня отношения
DEF __init__ (Self, имя файла, уровень = ' Информация ' , Когда = ' D ' , backCount = 3. ,
FMT = ' % (при asctime) S -% (путь к файлу) S [Line: % (LINENO) D] -% (levelname) S:% (сообщение) S ' ):
self.logger = logging.getLogger (имя файла)
format_str = logging.Formatter (FMT) # установить формат журнала
self.logger.setLevel (самообеспечение .level_relations.get (уровень)) # установить уровень журнала
SH = logging.StreamHandler () #Для вывода на экран
sh.setFormatter (format_str) # формате на экране настройки
# к # файла , записанного в указанный промежуток времени автоматически генерируется процессором файл
й = handlers.TimedRotatingFileHandler (имя файла = имя файла, когда = когда backupCount = backCount кодирование = ' UTF - 8 . ' )
th.setFormatter (format_str) # форматирование записи файла
self.logger.addHandler (SH) # к объекту на регистратор в
self.logger.addHandler (TH)
еСЛИ в __name__ == ' __main__ ' :
журнал = Logger ( ' all.log ' , уровень = ' Debug ' )
log.logger.debug ( ' отладить ' )
log.logger.info ( ' Информация ' )
log.logger.warning ( ' 警告' )
log.logger.error ( ' 报错' )
log.logger.critical ( ' 严重' )
Регистратор ( ' error.log ' , уровень = ' ошибки ' ) .logger.error ( ' ошибка ' )