我正在编写一个类,以从某些文件中提取数据并将其写入postgres数据库。现在的问题是,对于每个实例,我都从数据库中提取了一些信息,该信息对于所有其他实例都是恒定的。
因此,我想做的就是在创建第一个对象后立即运行一个函数/一段代码,该函数(或代码)将从数据库中提取该信息。然后,我希望我的其他实例可以访问此信息,而不是不断地查询数据库,因为该信息是恒定的。我在考虑类变量,装饰器的方向。我正在通过pytest进行测试,在这些测试中,它们具有具有作用域的夹具(@ pytest.fixture(scope ='module')),我们可以在其中放置需要运行一次的代码,稍后正在测试的其他功能可以使用该信息。 / p>
有人可以帮忙实现这一目标吗?
答案 0 :(得分:0)
您可以为此使用class attribute并检查它是否已在您的类的构造函数中设置:
class MyClass(object):
postgres_data = None:
def __init__(self):
if not MyClass.postgres_data:
MyClass.postgres_data = self.fetch_data()
def fetch_data(self):
pass