在一个类中只运行一次函数 - Python

Nis*_*hal 5 oop python-3.x

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

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

有人可以帮助如何实现这一目标吗?

kal*_*ann 6

您可以为此使用类属性并检查它是否已在类的构造函数中设置:

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
Run Code Online (Sandbox Code Playgroud)