python3のday07演習

「」「
1、新しいメソッドの実行順序とinitメソッドが実行さ?

:新しいメソッドの最初の実装を、メモリを開き、オブジェクトを作成し、初期化を実行する
」「」
#のクラスパーソン():      DEFの__init __(自己、名前、年齢) :
#1          self.name =名
#の         self.age年齢= 
#の         印刷( "私はinitメソッドだ。") #
      DEF __new __(CLS、* argsを、** kwargsから):          印刷( "私は新しい方法です。")
#の         リターンオブジェクト.__新しい新しい__(CLS) #
 P =人( "リリー"、18がある)P2 =人( "ルーシー"、20である。) 印刷(ID(P)、ID(P2))

'' ' 
2を、コールこの方法は、どのような時に呼び出されます?

:ときにオブジェクト()が呼び出されたとき
'「」
#をクラスパーソン():      DEFの__init __(自己):          印刷( "私はinitメソッドだ。") #
      DEF __call __(自己):          印刷( "私はメソッドを呼び出す") #
 P-=人() P-()

「」「
3、クラスを記述してください、反射して、クラスの静的属性を追加
「」 ' 
#のクラスパーソン():      パス
#の
#のSETATTR(人、 『年齢』、30) 印刷( person.age)

「」「
4を、反射のクラスのタイトル上のオブジェクトの属性名を追加し、あなたの名前である
「」」
#のクラスパーソン():     パスP =人() SETATTR(人、 "年齢"、30)
#1 SETATTR(P、 "名前"、 "暁ヤンヤン") 印刷(person.Age) 印刷(p.name)

'' ' 
。5、達成するための新しい方法を使用してシングルトン
'' ' 
クラスシングルトン():      __instance =なし#格納先     __init __ DEF(セルフ): #
(。         "私はこの方法を初期化")を印刷     DEF __new __(CLS、* argsを、** kwargsから):          そうでない場合はシングルトン.__インスタンス:#はなしかどうかを判断するためではありません             シングルトンのインスタンス=オブジェクト.__ .__新しい新しい__(CLS)#オブジェクトを作成し、クラス変数の更新
#の         リターンシングルトンを。__instanceの
#1 S =シングルトン()S1 =シングルトン() 印刷(ID(S)、ID(S1))

'' ' 
6、整合性チェック二つのファイル。
' '' 
インポートhashlib 
#の
#のDEFのget_file_md5(ファイル):      "" "文字列""暗号化されたMD5の後に"のファイルの内容を返します     OBJ = hashlib.md5()      obj.update(オープン(ファイル).read()。(エンコード" UTF-8「)を)
#1      )(リターンobj.hexdigestを
#1 :get_file_md5( "file1.py")== get_file_md5( "file2.py")IF 
#の     印刷( "2つのファイルの内容と一致していた。") 他に:
#の     印刷( "2つのファイルの内容が矛盾しています。" )

'' '
7、暗号文の塩ログイン
「」 ' 
インポートhashlibの=ユーザー名"" パスワード= "" 
#のクラス認証():
#1      "アパートで報告された草のインチを、作られた" __salt =ソルト文字列#     DEF get_md5_str(セルフ、STR1):          "" " MD5暗号化"" "          md5_obj = hashlib.md5(自己.__ salt.encode(" UTF-8 "))          md5_obj.update(str1.encode(" UTF-8「))          リターンmd5_obj.hexdigest() #
      登録DEF(セルフ):          "" "ユーザ登録" ""          しばらく1:
#1              名= INPUT( "登録ユーザ名:")。ストリップ()              INPUT = PWD( "登録パスワード:").strip()              IF名= ""とPWD =! ""! #                 株式会社フリーは、ユーザー名、パスワードの参加
#の                 ユーザ名=名
#の                 パスワード= self.get_md5_str(PWD)                  印刷を( " [%s]が正常に登録され、「%ユーザー名)
#の                 復帰真             他に:
#の                 印刷(」ユーザー名とパスワードを空にすることはできません「)。 #
      DEFログイン(セルフ):          」「」ユーザログイン「」 "          中1:
#の             名前= INPUT(「ログインユーザーネーム:「).strip()              名前== "IF":                  印刷(。 "ユーザー名はNULLにすることはできません")                  続行
#の             PWDを= INPUT( "ログインパスワード:").strip()              PWD IF == "":                  印刷(「パスワードはできません")空に                 続行
#の             :ユーザ名IF == == self.get_md5_str名とパスワード(PWD)                  " %名)。[%S]ログイン成功を印刷( " 
#の                 リターン真             他に:
#の                 印刷を("ユーザー名またはパスワードが正しくありません。」) 
#は                 Falseを返す
#の
#の
#をAUTH =認証()#オブジェクトを作成
#1 auth.register()#登録
#のauth.login()#ログインを

「「」
ログ設定8、出力ファイルに画面に完了し、いずれかを出力することができ
「」」
インポートログ
ログをインポートハンドラクラス:ロガー(オブジェクト)
    level_relations = {
         ' デバッグ' :logging.DEBUG、
         ' 情報' :logging.info、
         ' 警告' :logging.WARNING、
         ' エラー' :logging.error、
         ' クリティカル'

:Logging.CRITICAL 
    } ログレベルのマッピング関係

    DEF  __init__(セルフ、ファイル名、レベル= ' 情報'、= ' D '。、backCount = 3 
                 FMT = ' %(いるasctime)S - %(パス名)S [ライン: %(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)


IF  __name__は == ' __main__ ' 
    ログイン =ロガー(' all.log '、レベル= ' デバッグ' 
    log.logger.debug(' デバッグ' 
    log.logger.info(' 情報' 
    log.logger.warning(' 警告' 
    log.logger.error(' 报错' 
    log.logger.critical(' 严重' 
    ロガー(' のerror.log '、レベル= ' エラー').logger.error(' エラー'

 

おすすめ

転載: www.cnblogs.com/lilyxiaoyy/p/10929114.html