当某个类方法被另一个实例调用时,是否可以找出该类的哪个实例最后一次?

时间:2019-05-07 20:26:14

标签: python

抱歉,标题太长。不知道如何更简洁地询问。

为避免重复标题,下面是一个示例:

from random import choice

class Foo:
    def mymethod(self):
        # some code
        return
    def previous(self):
       ...

a = Foo()
b = Foo()
c = Foo()
d = Foo()
# etc ... 

for _ in range(10):
    x = choice([a, b, c, d])
    x.mymethod()
    x.previous()

我要实现的目标是制作一个类方法previous(),该方法打印/返回称为{{1}的 Foo()(a,b,c,d)的哪个实例。 }就在当前实例mymethod()

之前

为什么?

我有一个脚本,该脚本向特定主机的随机端点发出HTTP请求。这些端点是使用mymethod()方法发出HTTP请求的同一类的不同实例。

该类的每个实例(每个端点)都有一个pandas DataFrame,它保存每个请求的数据,例如响应时间。与此同时,我需要在当前请求之前做出的先前请求,因此是我的问题。

1 个答案:

答案 0 :(得分:1)

您可以创建一个类变量,该类变量在实例调用mymethod时进行更新-请注意,该类变量本身是更新的,而不是绑定到任何特定实例的变量。

class Foo:
    previous = None 

    def mymethod(self): 
        # do something 
        self.__class__.previous = self

a = Foo()
b = Foo()

a.mymethod()
a.previous == a  # True
b.previous == a  # True
a.previous == b  # False

b.mymethod()
a.previous == a  # False
b.previous == b  # True
相关问题