在乙個類層次中,如果最頂層基類需要定義某個屬性,最一般的方法就是在頂層的類中定義
乙個資料成員來儲存該屬性的值,然後在頂層基類中定義乙個非虛方法訪問該屬性的值。
但是如果物件的數量非常多時,這種方式會造成一定的記憶體開銷。
有一種特殊的情況:乙個物件的某個屬性的值完全由其所屬的類決定。在這種情況下,可以
在頂層基類定義乙個虛方法,然後在某些子類中覆蓋該方法。在這些虛方法中都根據所在
的類返回相應的常值。
例如在webkit的dom類層次中,有node,containernode,element,document等各種類,node類有乙個屬性,
即該node物件是否是element。這時可以在node中定義乙個返回false的virtual method,
然後在element中override該方法,並返回true。
這種方法的缺點是訪問速度慢,無法內聯。不過如果這個屬性的訪問次數很少,該方法還是很有價值的。
python節省記憶體技巧 使用 slots
slots 作用 slots 有乙個作用是 限制類例項繫結的屬性,但是它有乙個更重要的作用就是節省記憶體,當然更適用於資料量大的情況 萬量級以上 slots 節省記憶體的原理 class measurement def init self,x,y,value self.x x self.y y se...
Python 節省記憶體的迴圈寫法 一
0 前言 說到處理迴圈,我們習慣使用 for,while 等,比如依次列印每個列表中的字元 lis i love python for i in lis print i 輸出 i love python 在列印內容位元組數較小時,全部載入記憶體後,再列印,沒有問題。可是,如果現在有成千上百萬條車輛行...
二級頁表如何節省記憶體
深入理解linux核心 如果使用簡單的一級頁表,如果程序使用全部4g線性位址空間,那麼將需要高達2 20表項 總共位址線是32位,每頁大小為4kb,則頁偏移量需要低12位,高20位當作頁表位址 來儲存表示每個程序的頁表,若每項4b,則需要4mb的ram來儲存頁表。即使乙個程序並不使用內的所有位址。書...