首页 > 解决方案 > 重用从数据库实例化的对象

问题描述

对不起,如果这太简单了,但我是数据库新手。假设我有一个包含两张表的数据库,一张用于个人,一张用于国家/地区。每个人都有一个与之相关的国家。我想以一种懒惰的方式将这些表中的项目加载到 python 对象中。现在我正在遍历“persons”中的所有行并为它们实例化对象。因此,对于每个“人”,我得到一个对象,现在如果我想访问与一个人关联的国家,我得到 country_id 并实例化一个全新的“国家”实例(即使所有人都具有相同的国家)。例如,如果 person1.country 是 XXX,而 person2.country 是 XXX,则对象 ID 不同

class Person(object):
    def __init__(self, id):
         self.id = id

    def country():
         ...
         country_id = (gets id from db here)
         self.country = Country(country_id)

所以我会得到

id(person1.country) -> 123
id(person2.country) -> 456

让两个人共享同一个国家/地区实例的最pythonian方式是什么?

谢谢您的帮助

标签: python

解决方案


您可以实现Country为单例模式。

虽然我不得不问——为什么这很重要?只要person1.country == person2.country,你为什么关心id是否相同?


推荐阅读