我正在为现有数据存储区开发以用户为中心的前端。
我没有在我的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-lookup来访问其他简单的函数 - 对于上面的实例type_name_hint
基本上是 const 。
所以我的问题是:是否有内存开销,如果有更好的方法,或者Python如何解决问题。
答案 0 :(得分:2)
Python类实例基本上是实例变量的字典,加上对类本身的引用。类中定义的方法不会影响实例大小AT ALL:它们是通过类引用间接找到的。基本上,任何属性首先在实例的dict中查找,然后是类的dict,然后是超类的dict,依此类推依赖继承链。