Python 在動態屬性方面的靈活性是其優勢之一,但有時您希望優化記憶體使用和效能。
輸入槽,此功能可讓您為類別定義一組固定的屬性,減少記憶體開銷並可能加快屬性存取速度。
通常,Python 物件被實作為用於儲存屬性的字典,這可能會導致更高的記憶體消耗。
透過在類別中定義 slots,您可以指示 Python 使用記憶體效率更高的內部結構。
當您事先知道類別將具有的屬性並希望避免完整字典的開銷時,這尤其有用。
這裡示範如何使用老虎機:
class Point: __slots__ = ['x', 'y'] # Define the allowed attributes def __init__(self, x, y): self.x = x self.y = y # Create a Point instance p = Point(10, 20) print(p.x) # Output: 10 print(p.y) # Output: 20 # Attempting to add a new attribute will raise an AttributeError try: p.z = 30 except AttributeError as e: print(e) # Output: 'Point' object has no attribute 'z' # Output: # 10 # 20 # 'Point' object has no attribute 'z'
在此範例中,slots 將 Point 類別限制為僅 x 和 y 屬性。
嘗試設定 插槽中未列出的任何屬性會導致屬性錯誤。
使用槽可以透過消除屬性字典的開銷來顯著節省內存,尤其是在創建大量實例時。
還可以提高屬性存取速度。
但是,請小心:槽 可能會限制 Python 物件的某些動態功能,並且可能不適合所有用例。
以上是Python 技巧:__slots__ 的魔力的詳細內容。更多資訊請關注PHP中文網其他相關文章!