首页 > 解决方案 > Python 中在另一个类中访问 self 的最佳实践

问题描述

例如,如果我有 2 个类Tree,并且Node在 中的add_node方法中Tree,我可以将self引用添加TreeNode对象中,如下所示。Tree这样做是为了方便在对象中仅使用键访问其他部分时Node(即只能使用键)。但是,我想知道这是否被认为是最佳实践,因为 IDE (PyCharm) 也会尖叫Unresolved attribute reference 'tree' for class 'Node',所以可能也不是一个好兆头。

class Tree:
    def __init__(self):
        self.nodes = {}
    def add_node(self, count):
        new_node = Node()
        new_node.tree = self
        self.nodes[count] = new_node

class Node:
    def __init__(self):
        # Some data e.g. parent, children index
        pass

标签: pythonoopobject

解决方案


在初始化器中传递树Node

class Node:
    def __init__(self, tree):
        self.tree = tree

在创建节点时:

...
        new_node = Node(self)
        self.nodes[count] = new_node
...

推荐阅读