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

时间:2018-03-10 16:01:23

标签: python oop

我得到了一个类的以下结构。

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

它给出了所有实例的字典。

我的对象是否需要合理的名称,因为公司的名称是类属性,我可以迭代Company._registry

从数据库加载数据时,实例的名称(此处为kb)是多少?或者我可以只使用任意字符串?

2 个答案:

答案 0 :(得分:0)

您的Company._registry和名称k以及b都只是引用到您的实际实例。在您存储在数据库中的内容中都不起任何作用。

Python的对象模型将所有对象都放在一个大堆上,并且您的代码通过这些引用与对象进行交互。您可以根据需要创建任意数量的引用,并在没有引用时自动删除对象。参见Ned Batchelder的优秀Facts and myths about Python names and values article

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

如果您打算使用ORM,那么您实际上并不需要结构。将它留给ORM来帮助你找到你的对象,或者给你一系列迭代的所有对象。我建议使用SQLAlchemy

答案 1 :(得分:-1)

这个名字并不重要,但如果你要初始化很多物品,你仍然会以某种方式使它合理