我有一個類Foo
,包含一個類變量size
。 我想在第一次創建Foo
對象時計算大小,並將其用於所有後續對象,但不會再次計算大小。對於包含Foo
類中一切的緣故,我想出了這個代碼:改變類變量:好的做法還是不行? (Python)
class Foo(object):
size = -1
def __init__(self,args):
if Foo.size < 0:
Foo.size = some_calculation(args)
在我小的考驗,但我想要做什麼。但是,這是否被認爲是良好做法?有沒有更好的方法來做到這一點?
可以'Foo.size'計算出來是否爲'<0'?如果是這樣,你可能想初始化爲'None'並檢查'如果Foo.size是None:' – Jkdc
類變量當然有其用途,特別是在所有實例共享數據的情況下...所以,如果這樣做你想做的事情,它適合用例,沒關係。 – deceze
考慮一下,如果你這樣做,有些時候你可能會在任何對象初始化之前在代碼的其他地方爲'Foo.size'跳水,並且你會得到一個'AttributeError'。爲了避免這個問題,可以使用'try'塊,或者將'Foo.size'初始化爲'None'或者'0'作爲類定義的一部分。 –