实例名称和从数据库加载对象

2024-09-28 05:17:59 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我得到了一个类的以下结构

class Company(object):
    Companycount = 0

    _registry = {}

    def __init__(self, name):

        Company.Companycount +=1
        self._registry[Company.Companycount] = [self]

        self.name = name

k = Company("a firm")
b = Company("another firm")

每当我需要对象时,我都可以使用

Company._registry

它给出了所有实例的字典

既然公司的名称是class属性,而且我可以在Company._registry上迭代,那么我的对象需要合理的名称吗

从数据库加载数据时,实例的名称(这里是kb)是否重要?或者我可以使用任意字符串吗


Tags: 对象实例nameself名称objectinitdef
2条回答

你的Company._registry和名字kb只是对你的实际实例的引用。也不在数据库中存储的内容中扮演任何角色

Python的对象模型将所有对象放在一个大堆上,您的代码通过这样的引用与对象交互。您可以创建任意多的引用,当没有引用时,对象将自动删除。请看奈德·巴奇尔德的优秀作品Facts and myths about Python names and values article

您需要自己决定Company._registry结构是否需要有名称。如果您已经有了想要访问的公司的名称,那么对列表的迭代是很慢的,但是字典可以让您即时访问

如果您要使用ORM,那么实际上并不需要这种结构。让ORM来帮助您查找对象,或者给您一个所有对象的序列来迭代。我建议对此使用SQLAlchemy

名字并不重要,但是如果你要初始化很多对象,你还是会让它变得合理

相关问题 更多 >

    热门问题