2013-08-27 2 views
1

: 왜 fget=lambda self: self.getNumberOfColumns()http://www.brpreiss.com/books/opus7/html/page94.html이것은 왜 λ 함수를 사용하는 속성으로 만들어 졌습니까? 이 페이지에서

enter image description here

  1. 사용됩니까? 나는 이것이 Matrix().numberOfColumns (속성으로)을 사용할 수 있다는 것을 알고 있지만, 실제로 여기서 무엇이 일어나고 있습니까?

  2. lambda 기능을 사용하는 대신 fget=self.getNumberOfColumns()을 사용할 수없는 이유는 무엇입니까?

나는 이것을 이해하는 데 어려움을 겪고있다. 누군가 설명해 주시겠습니까?

답변

4

self이 클래스 범위에서 선언되지 않았기 때문에 fget=self.getNumberOfColumns을 수행 할 수 없습니다.

그러나 lambda은 필요하지 않습니다. 당신은 더 나은,

numberOfRows = property(fget=getNumberOfRows) 

또는로 작성할 수 있습니다

명시 적 게터 필요없이
@property 
def numberOfRows(self): 
    return self._numberOfRows 

, property 전화 및 할당.

1

는이 같은 람다 피할 수 :

@property 
def numberOfColumns(self): 
    return self.getNumberOfColumns() 
+0

을 그리고이 같은 클라이언트에서 사용할 같습니다. 'COLS = 매트릭스() numberOfColumns'를. 권리? –

+0

예, 이전과 마찬가지입니다. – Jiminion