我遇到了一个与实例属性相关的奇怪问题。我有一个变量logger
,我想成为一个实例属性。但是,我收到错误AttributeError: can't set attribute
,除非我将属性logger
移到__init__()
函数之外,其中(IIRC)意味着我宣布{{1}作为一个类属性(不是我想要的)。
以下是我的代码片段:
logger
为什么我会收到此错误,以及如何解决此问题?
答案 0 :(得分:1)
如果您查看source code(或者只是print(scrapy.Spider.logger)
,您可以看到Spider.logger
是property
,特别是没有定义setter,所以你不能轻易分配给它。
如果您想添加其他处理程序,则不一定需要创建自己的记录程序,因此我不确定您在此之后尝试实现的目标。虽然你真的''想要覆盖默认的self.logger
,因为您要对Spider
进行子类化,没有什么能阻止您添加以下内容:
@property
def logger(self):
return logging.getLogger('my_logger')
到你的班级。