我有一个日志类,它允许在日志中添加前缀。如果没有给定前缀,则应默认为“”。在
class PrefixedLog(Loggable):
def __init__(self):
self._prefix = None
@property
def prefix(self):
if self._prefix:
return self._prefix
else:
return ""
@prefix.setter
def prefix(self, value):
self._prefix = value
@property
def log(self):
if not hasattr(self, '_log') or not self._log:
log = logging.getLogger(self.__class__.__name__)
self._log = LoggerAdapter(self._prefix, log)
return self._log
我有另一个类,它创建了另一个类的对象,我试图在其中设置前缀:
^{pr2}$带前缀的类:
class B(PrefixedLog):
self.another_class = AnotherClass()
if self.prefix:
self.another_class.prefix = 'desired prefix'
我得到了这个错误:
AttributeError: 'B' object has no attribute '_prefix'
在
if self.prefix:
行。在
我已经找到了解决方案,但大多数都与格式问题有关…我确定没有选项卡。有什么问题吗?提前谢谢。在
另外-我想确保即使一个类没有特别设置前缀,那么前缀也会默认为“”,没有任何错误,也就是说,我不必回到所有的类并设置前缀。在
您的意思是将代码放在
__init__()
方法内的B
类中吗?我认为这个代码:应改为:
^{pr2}$当您编写} 的作用是:
self._prefix
时,它检索属性的值,如果该属性不存在,它将引发一个AttributeError
。在这种情况下,您需要检查属性是否存在,^{但是,这可以用^{} 的回退值缩短
^{pr2}$相关问题 更多 >
编程相关推荐