下面是兩段代碼:
代碼 1:
# -*- coding: utf-8 -*-
class Foo:
with open('myfile.json') as f:
bar = json.loads(f)
del f
def __init__(self):
print('Constructor')
# end of file
代碼 2:
# -*- coding: utf-8 -*-
class Foo:
def __init__(self):
print('Constructor')
with open('myfile.json') as f:
Foo.bar = json.loads(f)
del f
# end of file
這兩個代碼有什么區別嗎?如果不是,應該優先選擇哪一個?
uj5u.com熱心網友回復:
代碼 1:方法外代碼在定義類時運行一次。
代碼 2:方法和類之外的代碼在模塊匯入期間運行一次。
由于類定義發生在模塊匯入時,結果應該完全相同:
在任一變體中,您最終都會得到一個類,Foo其類變數bar設定為json.loads(f).
什么是首選?這最終是一個品味問題,不是嗎?代碼1強調這個json和bar業務屬于類。代碼 2 強調我們的模塊在匯入時做了一些特別的事情。有時這是一個重要的觀點。
uj5u.com熱心網友回復:
兩個片段或多或少都達到了相同的目的,只是在清潔度上有所不同。在第一個片段中,在閱讀這段代碼時,您已經知道欄包含檔案的內容。然而,在第二個片段中,bar直到看到檔案的結尾,您才知道該類有一個變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/345163.html
下一篇:使矩陣中的行垂直
