gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:55:03 26 4
gpt4 key购买 nike

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

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

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() 来打印/返回 Foo() 的实例(a、b、c、d)在当前实例调用 mymethod()

之前调用 mymethod()<小时/>

为什么?

我有一个脚本,可以向某个主机的随机端点发出 HTTP 请求。这些端点是同一类的不同实例,它们使用 request() 方法发出 HTTP 请求。

此类的每个实例(每个端点)都有一个 pandas DataFrame,用于保存每个请求的数据,例如响应时间。除此之外,我需要在当前请求之前发出的上一个请求,因此我的问题。

最佳答案

您可以创建一个类变量,每当实例调用 mymethod 时都会更新该变量。 - 请注意,类变量本身被更新,而不是绑定(bind)到任何特定实例的变量。

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

关于python - 当某个类的方法被另一个实例调用时,是否可以找出某个类的哪个实例最后调用了某个类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56030018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com