Skip to main content
 首页 » 编程设计

python之为什么这不是无限递归

2025年05月04日11lautakyan007

我想问你一段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 进行操作吗?因为它每次都调用自己?

请您参考如下方法:

UserDict.clear() 调用 self.data.clear()。 self.data 是 dict 类型,而不是 UserDict,所以它调用了一个不同的方法,而不是它自己。如果 UserDict.clear() 调用 self.clear() 而不是 self.data.clear(),这将是一个无限递归。