从最新版本来看,它似乎_log是用于获取记录器的适当属性。
我不认为这是您粘贴的实际代码示例的问题,但可能是 cocotb 中使用不推荐使用的log属性的其他地方。
实际上,我自己也看到了这一点,并使用了一种粗略的方法来确定调用的来源,方法是使用traceback模块并修改类中的__getattr__and__setattr__函数,如下所示:SimHandleBasecocotb/handle.py
import traceback
class SimHandleBase(object):
...
def __setattr__(self, name, value):
if name in self._compat_mapping:
if name not in _deprecation_warned:
warnings.warn("Use of %s attribute is deprecated" % name)
for line in traceback.format_stack(): # Inserted to print stack trace
print(line.strip()) # Inserted to print stack trace
_deprecation_warned[name] = True
return setattr(self, self._compat_mapping[name], value)
else:
return object.__setattr__(self, name, value)
def __getattr__(self, name):
if name in self._compat_mapping:
if name not in _deprecation_warned:
warnings.warn("Use of %s attribute is deprecated" % name)
for line in traceback.format_stack(): # Inserted to print stack trace
print(line.strip()) # Inserted to print stack trace
_deprecation_warned[name] = True
return getattr(self, self._compat_mapping[name])
else:
return object.__getattr__(self, name)