2009-12-17 7 views
4

J'essaie de lire un fichier de structure arborescente en python. J'ai créé une classe pour contenir les objets de l'arbre. L'un des membres doit contenir l'objet parent. Étant donné que le membre parentObject est du même type que la classe elle-même, je dois déclarer ceci comme une variable vide de type "self".déclarer un membre de classe vide en python

Comment faire cela en python?

Merci beaucoup pour votre aide.

Répondre

6

En Python, vous ne déclarez aucun type de variable. Vous venez de leur attribuer. Une même variable peut être affectée successivement à des objets de types différents, si vous le souhaitez. "self" n'est pas le type mais une convention de nommage utilisée pour se référer à l'objet courant, comme "this" en Java/C++ (sauf en Python on pourrait l'appeler comme on veut).

4

Je suppose que pour le nœud racine, vous voulez un tel objet. Il est beaucoup plus Pythonic dire:

self.parent = None 

dans votre objet racine, que de créer un objet vide de type self.__class__. Pour tous les autres objets de nœud dans l'arbre, self.parent doit se référer au nœud parent réel. Rappelez-vous, en Python, vous n'avez pas de 'variables', vous avez des objets, et il n'est pas nécessaire que self.parent soit de même type dans toutes les instances d'une classe.

3

Depuis le membre ParentObjet est de du même type que la classe elle-même, je besoin de déclarer cela comme une variable vide de type « auto ».

Non, vous n'avez pas besoin de déclarer quoi que ce soit en Python. Vous venez de définir les choses.

Et self n'est pas un type, mais le nom conventionnel pour le premier paramètre des méthodes d'instance, qui est défini par le langage à l'objet de la méthode.

Voici un exemple:

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 

Et voici comment cela pourrait être utilisé:

empty_tree = Tree() 

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