在Python中声明空类成员

12 投票
3 回答
33701 浏览
提问于 2025-04-15 17:09

我正在尝试在Python中读取一个树形结构的文件。为了处理这个树形结构,我创建了一个类来保存树的对象。其中一个成员变量应该用来保存父对象。因为这个父对象的类型和类本身是一样的,所以我需要把它声明为一个空的变量,类型是“self”。

请问我该怎么在Python中做到这一点呢?

非常感谢你的帮助。

3 个回答

7

我假设你想要一个这样的对象作为根节点。用Python的方式来说,直接在你的根对象中写:

self.parent = None

比起创建一个空的 self.__class__ 类型的对象要更好。对于树中的其他每个节点对象,self.parent 应该指向实际的父节点。

记住,在Python中,你没有“变量”,你只有对象,而且 self.parent 在类的所有实例中不需要是相同类型的。

7

在Python中,你不需要给变量声明类型。你只需要给它赋值就行。如果你想的话,同一个变量可以先后被赋值为不同类型的对象。“self”并不是一种类型,而是一种命名约定,用来指代当前的对象,就像Java或C++中的“this”。不过在Python中,你可以把它叫成任何你想要的名字。

11

因为parentObject这个成员和类本身是同一种类型,所以我需要把它声明为一个类型为“self”的空变量。

不,在Python中你不需要声明任何东西。你只需要定义它们。

而且self并不是一种类型,它只是实例方法第一个参数的约定名称,Python会把这个参数设置为方法所对应的对象。

这里有个例子:

class Tree(object):

    def __init__(self, label=None):
        self.label = label
        self.parent = None
        self.children = []

    def append(self, node):
        self.children.append(node)
        node.parent = self

这是它的使用方式:

empty_tree = Tree()

simple_tree = Tree()
simple_tree.append(Tree('hello'))
simple_tree.append(Tree('world'))

撰写回答