<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 裝飾器類 # 裝飾器類 現在我們有了能用于正式環境的`logit`裝飾器,但當我們的應用的某些部分還比較脆弱時,異常也許是需要更緊急關注的事情。比方說有時你只想打日志到一個文件。而有時你想把引起你注意的問題發送到一個email,同時也保留日志,留個記錄。這是一個使用繼承的場景,但目前為止我們只看到過用來構建裝飾器的函數。 幸運的是,類也可以用來構建裝飾器。那我們現在以一個類而不是一個函數的方式,來重新構建`logit`。 ~~~ class logit(object): def __init__(self, logfile='out.log'): self.logfile = logfile def __call__(self, func): log_string = func.__name__ + " was called" print(log_string) # 打開logfile并寫入 with open(self.logfile, 'a') as opened_file: # 現在將日志打到指定的文件 opened_file.write(log_string + '\n') # 現在,發送一個通知 self.notify() def notify(self): # logit只打日志,不做別的 pass ~~~ 這個實現有一個附加優勢,在于比嵌套函數的方式更加整潔,而且包裹一個函數還是使用跟以前一樣的語法: ~~~ @logit() def myfunc1(): pass ~~~ 現在,我們給`logit`創建子類,來添加email的功能(雖然email這個話題不會在這里展開)。 ~~~ class email_logit(logit): ''' 一個logit的實現版本,可以在函數調用時發送email給管理員 ''' def __init__(self, email='admin@myproject.com', *args, **kwargs): self.email = email super(logit, self).__init__(*args, **kwargs) def notify(self): # 發送一封email到self.email # 這里就不做實現了 pass ~~~ 從現在起,`@email_logit`將會和`@logit`產生同樣的效果,但是在打日志的基礎上,還會多發送一封郵件給管理員。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看