Python中的__SLOTS__屬性使用示例
更新時間:2015年02月18日 15:45:42 投稿:junjie
這篇文章主要介紹了Python中的__SLOTS__屬性使用示例,本文直接給出代碼示例,需要的朋友可以參考下
看python社區(qū)大媽組織的內(nèi)容里邊有一篇講python內(nèi)存優(yōu)化的,用到了__slots__。然后查了一下,總結(jié)一下。感覺非常有用
python類在進(jìn)行實例化的時候,會有一個__dict__屬性,里邊有可用的實例屬性名和值。聲明__slots__后,實例就只會含有__slots__里有的屬性名。
# coding: utf-8
class A(object):
x = 1
def __init__(self):
self.y = 2
a = A()
print a.__dict__
print(a.x, a.y)
a.x = 10
a.y = 10
print(a.x, a.y)
class B(object):
__slots__ = ('x', 'y')
x = 1
z = 2
def __init__(self):
self.y = 3
# self.m = 5 # 這個是不成功的
b = B()
# print(b.__dict__)
print(b.x, b.z, b.y)
# b.x = 10
# b.z = 10
b.y = 10
print(b.y)
class C(object):
__slots__ = ('x', 'z')
x = 1
def __setattr__(self, name, val):
if name in C.__slots__:
object.__setattr__(self, name, val)
def __getattr__(self, name):
return "Value of %s" % name
c = C()
print(c.__dict__)
print(c.x)
print(c.y)
# c.x = 10
c.z = 10
c.y = 10
print(c.z, c.y)
c.z = 100
print(c.z)
{'y': 2}
(1, 2)
(10, 10)
(1, 2, 3)
10
Value of __dict__
1
Value of y
(10, 'Value of y')
100
相關(guān)文章
Python?Asyncio庫之a(chǎn)syncio.task常用函數(shù)詳解
Asyncio在經(jīng)過一段時間的發(fā)展以及獲取Curio等第三方庫的經(jīng)驗來提供更多的功能,目前高級功能也基本完善。本文主要介紹了Asyncio庫中asyncio.task常用函數(shù)的使用,需要的可以參考一下2023-03-03
用Python實現(xiàn)服務(wù)器中只重載被修改的進(jìn)程的方法
這篇文章主要介紹了用Python實現(xiàn)服務(wù)器中只重載被修改的進(jìn)程的方法,包括用watchdog來檢測文件的變化等,實現(xiàn)起來充分體現(xiàn)了Python作為動態(tài)語言的靈活性,強(qiáng)烈推薦!需要的朋友可以參考下2015-04-04
pd.drop_duplicates刪除重復(fù)行的方法實現(xiàn)
drop_duplicates 方法實現(xiàn)對數(shù)據(jù)框 DataFrame 去除特定列的重復(fù)行,本文主要介紹了pd.drop_duplicates刪除重復(fù)行的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
python實現(xiàn)進(jìn)度條和系統(tǒng)通知的示例詳解
這篇文章主要和大家分享兩個有意思的Python小工具,可以優(yōu)雅地實現(xiàn)進(jìn)度條和系統(tǒng)通知,文中的示例代碼簡潔易懂,有需要的小伙伴快也跟隨小編一起學(xué)習(xí)一下2023-11-11

