2009-12-17 4 views
4

python으로 트리 구조 파일을 읽으려고합니다. 트리 객체를 보유 할 클래스를 만들었습니다. 구성원 중 하나 인 이 상위 개체를 보유해야합니다. parentObject 멤버가 클래스 자체와 동일한 유형이므로 "self"유형의 빈 변수로 선언해야합니다.python에서 빈 클래스 멤버 선언

파이썬에서는 어떻게합니까?

도움 주셔서 감사합니다.

답변

6

파이썬에서는 변수를 타입으로 선언하지 않습니다. 당신은 그들에게 할당합니다. 원하는 경우 단일 변수에 여러 유형의 객체를 연속적으로 할당 할 수 있습니다. "self"는 자바/C++에서 "this"와 같이 현재 객체를 참조하는 데 사용되는 형식이 아니라 이름 지정 규칙입니다 (Python에서는 사용자가 원하는 모든 것을 호출 할 수 있음).

4

루트 노드의 경우 그러한 개체가 필요하다고 가정합니다. 그것은 훨씬 더 파이썬 말의 : 루트 객체의

self.parent = None 

입력 self.__class__의 빈 객체를 생성하는 것보다. 트리의 모든 다른 노드 객체에 대해 self.parent은 실제 상위 노드를 참조해야합니다.

파이썬에는 '변수'가 없으므로 객체가 있으므로 클래스의 모든 인스턴스에서 self.parent이 같은 유형이어야 할 필요가 없습니다. parentObject 구성원이 클래스 자체와 동일한 유형이기 때문에

3

, 나는 형 "자기"의 빈 변수로 선언 할 필요가 .

아니요, 파이썬에서는 아무 것도 선언 할 필요가 없습니다. 당신은 단지 사물을 정의합니다.

그리고 self는 형식이 아니지만 메서드의 개체에 언어에 의해 설정된 인스턴스 메서드의 첫 번째 매개 변수에 대한 일반적인 이름입니다. 즉 사용할 수있는 방법은 여기

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')) 
다음

은 예입니다