簡體   English   中英

蟒蛇。 在基類中具有許多方法的內存開銷。

[英]Python. Memory overhead of having many methods in a base class.

我正在為現有數據存儲開發以用戶為中心的前端。

我沒有在UI中添加繁瑣的查找表,而是將UI“提示”附加到了許多數據包裝器上。

例如:

class LibraryBook(IDatabaseItem):
    """There are a billion books in my library"""


    @property
    def name_hint(self):
        """This is a METHOD, I do not want to duplicate the fields in a new string!"""

        return self.author + " " + self.title


    @staticmethod
    @property
    def type_name_hint():
        """This is CONSTANT, there is no point in every instance having an attribute!"""

        return "Book"

    . . .

(接口IDatabaseItem只是為了使來自IDE的代碼完成更容易,我知道在Python中這不是必需的)。

我擔心的是,所有這些小的方法都在增加內存開銷。 C ++會創建一個指向v表的簡單指針,但是據我所讀的Python使用dict ,這樣做會導致大量的內存開銷,更不用說通過dict查找來訪問其他微不足道的功能了-例如上面的type_name_hint是本質上是const

所以我的問題是:是否有內存開銷?如果有,哪種更好的方法?如果沒有,Python如何解決該問題?

Python類實例基本上是實例變量的字典,加上對類本身的引用。 類中定義的方法不會影響實例大小AT ALL:可以通過類引用間接找到它們。 基本上,首先在實例的dict中查找任何屬性,然后在類的dict中查找,然后在超類的dict中查找,依次類推到繼承鏈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM