新类对象保留先前定义的对象的值

时间:2016-02-15 01:30:18

标签: python-2.7 oop

s1 = Student()
s1.set_access_token(TOKEN)
s1.set_api_key(CLIENT_API_KEY)
s1.get_role(pagination_range=(2, 3))
pprint(s1.get_response())

s2 = Student()
s2.set_access_token(TOKEN)
s2.set_api_key(CLIENT_API_KEY)
s2.get_role(role_id="0c127e7b-3b97-4d9d-a802-5acbca54097a")
pprint(s2.get_response())

默认情况下,有一个Student类有6个成员变量None。如上所述,对象s1pagination_range设置为(2, 3)s2role_id设置为0c127e7b-3b97-4d9d-a802-5acbca54097a

但我注意到pagination_ranges2的值也设为(2, 3)

其他可能有用的信息是:

  • StudentRole类的子类。
  • Role使用requests模块使用上面代码段中给出的值发送请求

以下是Student课程,此处是Role课程。

如何避免?

1 个答案:

答案 0 :(得分:0)

api_key被定义为Role ...

中的类变量
class Role(object):
    response = None
    access_token = None
    api_key = None

这些字段是在初始化程序之外定义的,因此不受“自我”实例限定 - 因此它们是针对类本身定义的。这意味着该类的所有实例共享相同的值。

您可能需要针对 init 方法中的实例定义它们...

class Role(object):
    def __init__(self):
        response = None
        access_token = None
        api_key = None

当然,你可能只是为了api_key而逃脱。这取决于其他字段的用途。