如何从需要持久化的方法中正确设置类属性?

时间:2019-03-27 22:57:13

标签: python

我正在构建一个类,该类具有许多方法来从同一网站请求不同的数据。要注意的是,session_id需要在所有实例方法之间保持持久性。

我在下面编写了一些模拟代码,想知道这是否是正确的解决方法,还是我弄错了?

import random

class classTest():
    def __init__(self):
        self.session_id = None

    def set_session_id(self):
        if self.session_id == None:
            self.session_id = random.randrange(0,1000)
        return self.session_id

    def use_session_id(self):
        return self.set_session_id()

    def use_session_id_again(self):
        return self.set_session_id()

在上面的示例中,我用一个随机数模拟了session_id,当我测试两种不同的方法时,我得到了持久的结果,这意味着它工作得很好...但这是实现此目标的正确方法吗?谁能建议一种更好/适当的方式来做到这一点?

1 个答案:

答案 0 :(得分:2)

首选的方法是在session_id方法中仅将__init__设置一次,因此在初始化之后,它在对象的整个生命周期内保持不变。而且只是不要在初始化后更改它。

类似这样的东西:

import random

class classTest():
    def __init__(self):
        self.session_id = random.randrange(0,1000)

    def use_session_id(self):
        print(self.session_id)

    def use_session_id_again(self):
        print(self.session_id)

test = classTest()  # session_id is set here
test.use_session_id()  # will print session id
test.use_session_id_again()  # will print the same session id