2011-08-09 3 views
1

다른 인스턴스에서 C의 인스턴스의 비공개 속성 을 수정해야합니다.Cython, 보호 된 속성

cdef class C: 
    cdef C superC 

    cdef MakeToSuper(self, C other): 
     other.superC = C 

protected C에서 트릭을 할 아마도,하지만 어떻게 Cython이를 achive 수 있습니까?

+0

이 질문을 명확히해야합니다. 무엇을 성취하려고합니까? – fabrizioM

+0

@fabrizioM 클래스'C'는 2 개의 인스턴스 * A *와 * B *를 가지고 있습니다. 이들 클래스는 모든 사용자에게 보이지 않아야하는 속성을 정의하지만 C의 인스턴스는이 속성을보고 수정할 수 있어야합니다. 나는 코드 조각이 그것을 할 것이라고 생각했다. ^^ –

+0

나도 이해가 안돼. 클래스 내의 cdef 속성은 Cython 컨텍스트 내에서 public입니다. 그리고 파이썬에서는 접근 할 수 없습니다. 그럼 당신의 스 니펫이 제대로 작동합니까? 뭘 더 원하니? – tito

답변

0

시도해 보셨습니까?

_ 

"do not touch pls"메시지 (좋아, 파이썬 프로그래머 만 이해할 수 있지만 그보다 나은 점은 없습니다).

__ 

두 번 밑줄은 파이썬에서 "개인"과 같다 (하지만 여전히 적절한 파이썬 메커니즘을 사용하면 액세스 할 수 있습니다)도있다.

__ (밑줄)을 두어 클래스의 다른 인스턴스에서 파이썬 매직을 사용하여 액세스하십시오. 다른 파이썬 코드와 동일한 마법으로 액세스 할 수 있지만 바이 패스 방법을 아는 모든 사람들은 이유가 있음을 알고 있습니다.

+0

그게 파이썬에서했던 일반적인 방법입니다. 나는 cython에서 다른 방법이있을 거라고 생각했습니다. :) 감사 –