python 百萬級別類例項實現節省記憶體

2022-02-06 07:42:42 字數 1221 閱讀 2050

#

案例:'''

某網路遊戲中,定義了玩家類player(id,name,status)

每當有乙個玩家,就會在伺服器建立乙個player例項

如何降低這些例項的大量例項的記憶體開銷?

解決方案:定義類的 __slots__屬性,它是用來宣告例項屬性名字的列表

'''class

player(object):

__slots__ = ['

name

', '

id', '

status']

def__init__

(self, name, id, status):

self.name =name

self.id =id

self.status =status

deftest(self):

print

(self.name)

print

(self.id)

print

(self.status)

class

player1(object):

def__init__

(self, name, id, status):

self.name =name

self.id =id

self.status =status

p = player("

li", '

111', '10'

)p.test()

p1 = player1("

li", '

111', '10'

)print

(dir(p1))

print

(dir(p))

print(set(dir(p1)) - set(dir(p))) #

求兩個例項的差集 p1比p多了 其__dict__占用大量記憶體

import

sysprint(sys.getsizeof(p1.__dict__)) #

列印出p1.__dict__占用記憶體大小

"""例項p1可以動態生成屬性,而p則不行,實現阻止動態繫結

"""p1.x = 1p1.

__dict__['

y'] = 2

print(p1.__dict__)#

p.x = 1

#p.__dict__['y'] = 2

python 類和例項

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...

python 類和例項

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。仍以student類為例,在python中,定義類是通過class關鍵字 class stude...

python 類,物件 例項

簡單示例 類方法 python 類方法和例項方法相似,它最少也要包含乙個引數,只不過,類方法中通常將其命名為 cls,且 python 會自動將類本身繫結給 cls 引數 而不是類物件 因此,在呼叫類方法時,無需顯式為 cls 引數傳參。類靜態方法 靜態方法,其實就是我們學過的函式,和函式唯一的區別...