在类中仅运行一次函数-Python

时间:2018-12-18 10:23:53

标签: python-3.x oop

我正在编写一个类,以从某些文件中提取数据并将其写入postgres数据库。现在的问题是,对于每个实例,我都从数据库中提取了一些信息,该信息对于所有其他实例都是恒定的。

因此,我想做的就是在创建第一个对象后立即运行一个函数/一段代码,该函数(或代码)将从数据库中提取该信息。然后,我希望我的其他实例可以访问此信息,而不是不断地查询数据库,因为该信息是恒定的。我在考虑类变量,装饰器的方向。我正在通过pytest进行测试,在这些测试中,它们具有具有作用域的夹具(@ pytest.fixture(scope ='module')),我们可以在其中放置需要运行一次的代码,稍后正在测试的其他功能可以使用该信息。 / p>

有人可以帮忙实现这一目标吗?

1 个答案:

答案 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