」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Python 技巧:__slots__ 的魔力

Python 技巧:__slots__ 的魔力

發佈於2024-11-02
瀏覽:991

Python Trick: The Magic of __slots__

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 物件的一些動態功能,並且可能不適合所有用例。

版本聲明 本文轉載於:https://dev.to/devasservice/python-trick-the-magic-of-slots-578j?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3