3 回答
TA贡献1809条经验 获得超8个赞
有几种方法可以做到。这是global通过创建start_time实例变量/属性ABC并ABC在XYZ. 我认为这也是用户@Daniel 在评论“您必须将 ABC 的实例传递给 XYZ 的实例”中暗示的内容。
import time
class Parent:
pass
class ABC(Parent):
def __init__(self):
self.start_time = None
def func1(self):
self.start_time = time.time()
class XYZ(Parent):
def __init__(self):
self.abc = ABC()
def func2(self):
self.abc.func1()
return time.time() - self.abc.start_time
xyz = XYZ()
print(xyz.func2())
Python3.5 输出:
>>> xyz = XYZ()
>>> print(xyz.func2())
9.5367431640625e-07
TA贡献1802条经验 获得超5个赞
用一种不会乱七八糟的方法来解决你的问题是很困难的。本质上,您需要在两个函数之外使用一个变量。我认为你最好的选择是使用 python 的global关键字:
class ABC(Parent):
def func1(self, **kwargs):
global start_time
start_time = time.time()
return stuff
class XYZ(Parent):
def func2(self, **kwargs):
global start_time
a = time.time() - start_time
return other_stuff
使用globalhere 可以避免在函数之外定义变量。
TA贡献1789条经验 获得超10个赞
您可以start_time在Parent.
class Parent(object):
def __init__(self):
self.start_time = None
class ABC(Parent):
def func1(self, **kwargs)
self.start_time = time.time()
...
...
return stuff
class XYZ(Parent):
def func2(self, **kwargs)
...
...
a = time.time() - self.start_time
return other_stuff
添加回答
举报