python - 重用从数据库实例化的对象
问题描述
对不起,如果这太简单了,但我是数据库新手。假设我有一个包含两张表的数据库,一张用于个人,一张用于国家/地区。每个人都有一个与之相关的国家。我想以一种懒惰的方式将这些表中的项目加载到 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方式是什么?
谢谢您的帮助
解决方案
您可以实现Country
为单例模式。
虽然我不得不问——为什么这很重要?只要person1.country == person2.country
,你为什么关心id是否相同?
推荐阅读
- swiftui - SwiftUI 整数说明符在选择器中不起作用
- javascript - 为什么我得到这个 ActionController::RoutingError (没有路由匹配 [GET] "/users/assets/application.js")
- c - Julia ccall 的不一致行为
- java - Java不保持请求空闲
- java - java Super.call有什么最佳实践吗?
- javascript - python-shell抛出一个无法理解的错误
- android - 如何取消 Admob 上的广告投放限制?
- java - 如何管理调度 SpringBoot Applications 任务?
- apache-kafka - 为什么filebeat在向kafka的topic中插入数据时会注册一个新的broker?
- python - DataFrame 作为默认函数参数未按预期工作