为什么这不是无限递归?

时间:2011-03-18 15:11:57

标签: python function recursion

我想问一下Python中的代码:

class UserDict:
    def __init__(self, dict=None, **kwargs):
        self.data = {}
        if dict is not None:
            self.update(dict)
        if len(kwargs):
            self.update(kwargs)
    def clear(self): self.data.clear()

此处,clear(self)UserDict类的方法,对类的data属性进行操作,对吧?这个函数永远不会在data上运行吗?因为它每次自称?

2 个答案:

答案 0 :(得分:6)

UserDict.clear()来电self.data.clear()self.data类型为dict,而不是UserDict,因此它会调用不同的方法,而不是自身。如果UserDict.clear()调用self.clear()而不是self.data.clear(),那将是无限递归。

答案 1 :(得分:2)

不,此方法调用clear dict的data方法,该方法与UserDict完全无关。