抱歉,标题太长。不知道如何更简洁地询问。
为避免重复标题,下面是一个示例:
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,它保存每个请求的数据,例如响应时间。与此同时,我需要在当前请求之前做出的先前请求,因此是我的问题。
答案 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