__slots__用來限制類中的執行個體屬性每個執行個體對象 x 都擁有一個字典 x.__dict__. python通過此字典允許你綁定任意屬性給 x 執行個體. 定義一個名為 __slots__ 的類屬性可以有效減少每個執行個體佔用的記憶體數量. __slots__ 是一個字串序列(通常是一個tuple). 當類 擁有 __slots__屬性, x 的直接子類就沒有 x.__dict__屬性. 如果試圖綁定一個 __slots__ 中不存在屬性給執行個體的話, 就會引發異常. __slots__屬性雖然令你失去綁定任意屬性的方便, 卻能有效節省每個執行個體的記憶體消耗, 有助於產生小而精乾的執行個體對象
class SYG(object): __slots__ = ('x','y') def __init__(self): passif __name__ == '__main__': test = SYG() test.z = 3 #拋出異常
__all__這個用來限定一個檔案模組中可以被其他模組import的所有類__all__ = ['CocosNode'] 表示本模組只有CocosNode可以被別的模組import__contains__
Cocos2D中會定義如下的函數來判斷一個節點是否是其子節點 def __contains__(self, child):
return child in self.get_children()
其他屬性
用內建函數dir()可以顯示類屬性,例如:
class SYG(object): def __init__(self): self.x = [1,2,3] def __contains__(self,a): return a in xif __name__ == '__main__': print(dir(SYG))
可以得到類似下面的內容:
['__class__', '__contains__', '__delattr__', '__dict__', '__doc__', '__eq__', '_
_format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__l
e__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__'
, '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__wea
kref__']
C.__name__ 類C的名字(字串)
C.__doc__ 類C的文檔字串
C.__bases__ 類C的所有父類構成的元組
C.__dict__ 類C的屬性
C.__module__ 類C定義所在的模組(1.5 版本新增)
C.__class__ 執行個體C對應的類(僅新式類中)
《本節完》