我有一個具有以下結構的類。
class MyClass:
my_variable = pickle.load(open("my_file.p", "rb"))
def __init__(self):
.
.
.
我認為,pickle.load()這是一項昂貴的操作,這就是為什么我想知道每次實體化類時是否都會呼叫它,還是在匯入檔案時只呼叫一次?
uj5u.com熱心網友回復:
定義類時定義所有類屬性(my_variable、__init__等)。當類被實體化時,類似的方法會被呼叫,但此時沒有任何類屬性被重新定義。__init__
pickle.load只會在MyClass第一次定義時呼叫一次。
基本上,您可以將class陳述句視為一種宣告性的寫作方式
def my_class_init(self):
...
namespace = {
'__init__': my_class_init,
'my_variable': pickle.load(...)
}
MyClass = type('MyClass', (), namespace)
只有pickle.load被呼叫來定義dict系結到namespace.
uj5u.com熱心網友回復:
它將在創建類實體時加載一次,并且該類屬性(my_variable)在所有類實體之間共享,并且任何修改都在所有人之間共享。所以是一次性操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/494851.html
上一篇:更好的方法:混合列舉或2個列舉
