# CommentForest

class `praw.models.comment_forest.``CommentForest`(submission, comments=None)

  A forest of comments starts with multiple top-level comments.

  Each of these comments can be a tree of replies.

  `__getitem__`(index)

    Return the comment at position `index` in the list.

    This method is to be used like an array access, such as:

        first_comment = submission.comments[0]

    Alternatively, the presence of this method enables one to iterate over all top_level comments, like so:

        for comment in submission.comments:
            print(comment.body)

  `__init__`(submission, comments=None)

    Initialize a CommentForest instance.

    Parameters:

    - submission – An instance of `Subreddit` that is the parent of the comments.
    - comments – Initialize the Forest with a list of comments (default: None).

  `__len__`()

    Return the number of top-level comments in the forest.

  `list`()

    Return a flattened list of all Comments.

    This list may contain `MoreComments` instances if `replace_more()` was not called first.

  `replace_more`(limit=32, threshold=0)

    Update the comment forest by resolving instances of MoreComments.

    Parameters:

    - limit – The maximum number of `MoreComments` instances to replace. Each replacement requires 1 API request. Set to `None` to have no limit, or to `0` to remove all `MoreComments` instances without additional requests (default: 32).
    - threshold – The minimum number of children comments a `MoreComments` instance must have in order to be replaced. `MoreComments` instances that represent “continue this thread” links unfortunately appear to have 0 children. (default: 0).

    Returns: | A list of `MoreComments` instances that were not replaced.

    For example, to replace up to 32 `MoreComments` instances of a submission try:

        submission = reddit.submission('3hahrw')
        submission.comments.replace_more()

    Alternatively, to replace `MoreComments` instances within the replies of a single comment try:

        comment = reddit.comment('d8r4im1')
        comment.refresh()
        comment.replies.replace_more()

    Note

    This method can take a long time as each replacement will discover at most 20 new `Comment` or `MoreComments` instances. As a result, consider looping and handling exceptions until the method returns successfully. For example:

        while True:
            try:
                submission.comments.replace_more()
                break
            except PossibleExceptions:
                print('Handling replace_more exception')
                sleep(1)