所以,我有这段代码片段。为什么在Python中使用self时,该类传递给在类函数中被调用的函数?
class LogObserver(object):
def write_log(...):
self.logger.log(self, level, message, *args, **kwargs)
...
展望调试器和错误信息,以及,我注意到,变量level
包含LogObserver
而不是整数。我期待一个整数。
然而,当我从self.logger.log()
除去self
像:
self.logger.log(level, message, *args, **kwargs)
level
包含一个整数,而不是一个对象LogObserver
。错误消息也会消失。
这种行为背后的解释是什么?
我不明白你在问什么。 “自我”就是实例;如果您将其包含在该调用中,则该实例将被传递;如果你删除它,它不会。你的问题是什么? –
'.log'里面的'self'应该指向'LogObserver'中的名为'self.log'的对象,而不是观察者本身。你为什么认为你需要传递外部'self'(或任何显式实例)?你写了那个片段吗?你可以给[mcve]? – jonrsharpe
在第一种情况下,您传入LogObserver。在第二个你不。你期望发生什么? –