어떻게 이런 상황에 처하게되었는지 묻지 마십시오. ccollection
이라는 클래스가 있다고 가정 해 보겠습니다.클래스의 모든 속성 인쇄
이 클래스는 런타임에 다음과 같은 특성이 있습니다 : 전술 한 바와 같이
ccollection.a.b.x = 1
ccollection.a.b.y = 3
ccollection.a.b.z = 4
...
ccollection.a.c = 3
ccollection.b = 3
이 클래스는 동적으로 설정 될 것입니다. 그래서 클래스의 속성을 직접 알 수있는 방법은 없습니다. 이제
내가 예를 들어,이 클래스의 모든 속성을 인쇄하고 싶습니다 :
ccollection.a.b
내가 당신이 얻을 생각
ccollection.a.b.x = 1
ccollection.a.b.y = 3
ccollection.a.b.z = 4
ccollection.a.c = 3
를 인쇄해야
ccollection.a.b.x = 1
ccollection.a.b.y = 3
ccollection.a.b.z = 4
및 ccollection.a
를 인쇄한다 아이디어. 각 인쇄는 같은 레벨 아래의 모든 요소 인쇄를 시작해야합니다. 재귀 적으로 모든 속성 (나무와 같은 데이터 구조)을 가로 지르는 방법을 찾고 있습니다.
'collection.a'의 유형은 무엇입니까? 'collection.a.b'는'collection' 객체의 속성이 아니고'collection.a'의 속성이기 때문에 묻습니다. 원하는 방식으로 작동하려면 사용자 정의'__str__' 또는'__repr__' 메소드로 여러 클래스를 만들어야 할 수도 있습니다. – Blckknght
@Blckknght, ccollection.a.b.x = 1에서 a 자체는 ccollection이고, b는 또한 ccollection입니다. x가 1로 설정됩니다. – theAlse
Ok. 어떻게 속성을 작성하고 있습니까? 방금 직접 할당하고 있습니까 (예 :'ccollection.a = ccollection()')? 또는 주어진 인스턴스가 어떤 속성을 가져야 하는지를 알 수있는 특정 방법이 있습니까? 그렇지 않다면,'dir'을 사용할 수 있습니다. 그러나 그 방법에 포함될 다른 방법들과 다른 방법들을 제거하는 것은 고통이 될 것입니다. – Blckknght