Почему это не бесконечная рекурсия? - PullRequest
1 голос
/ 18 марта 2011

Я хотел бы спросить вас о коде в 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 ]

6 голосов
/ 18 марта 2011

UserDict.clear() звонки self.data.clear().self.data имеет тип dict, а не UserDict, поэтому он вызывает другой метод, а не сам.Было бы бесконечной рекурсией, если UserDict.clear() называется self.clear() вместо self.data.clear().

2 голосов
/ 18 марта 2011

Нет, этот метод вызывает метод clear для data dict, который совершенно не связан с UserDict.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...