python一个基类中有许多方法的内存开销。

python一个基类中有许多方法的内存开销。,python,python-3.x,memory,subclass,overriding,Python,Python 3.x,Memory,Subclass,Overriding,我正在为现有数据存储开发一个以用户为中心的前端 我没有在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

我正在为现有数据存储开发一个以用户为中心的前端

我没有在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<代码>中,这会导致大量的内存开销,更不用说有一个DCT查找来访问其他琐碎的功能了。例如,代码> Type NythySoNo.<代码>本质上是const .< /p>
因此,我的问题是:是否存在内存开销,如果存在内存开销,更好的方法是什么,或者如果没有内存开销,Python如何解决这个问题。

Python类实例基本上是实例变量的dict,加上对类本身的引用。类中定义的方法根本不影响实例大小:它们是通过类引用间接找到的。基本上,任何属性都会首先在实例的dict中查找,然后是类的dict,然后是超类的dict,依此类推继承链。

Python类实例基本上是实例变量的dict,再加上对类本身的引用。类中定义的方法根本不影响实例大小:它们是通过类引用间接找到的。基本上,任何属性都会首先在实例的dict中查找,然后在继承链上查找类的dict,然后在超类的dict中查找,依此类推。

为什么希望这些是方法而不是属性?如果将它们设为属性,静态属性可以是固定属性,动态属性可以是
@property
。我觉得属性会占用更多内存。e、 g.然后,示例中的每个实例都会有一个
作者
标题
的第二个完整副本,以及一个指向
书籍
书籍
的无效指针。我已经在内部使用
@property
,但是,由于它们只是伪装的方法,这并不能解决我的问题。@jonrsharpe-在编辑问题:)为什么你希望这些是方法,而不是属性?如果你将它们设为属性,静态的可以是固定属性,动态的可以是
@property
。我觉得属性会占用更多内存。e、 g.然后,示例中的每个实例都会有一个
作者
标题
的第二个完整副本,以及一个指向
书籍
书籍
的无效指针。我已经在内部使用
@property
,但由于它们只是伪装的方法,这并不能解决我的担忧。@jonrsharpe-修正了编辑问题:)