많은 필드가 빈 배열로 들어있는 객체가 있습니다 (모두 float64 유형 임). 이러한 필드 중 일부는 내가/접근 기록 할 때 사용하고자하는 의미있는 이름을 가지고 있지만, 내 현재의 지식으로, 나는 액세스하고 다음과 같이 작성해야합니다 : 나는 C에서 일하는 경우배열의 이름을 파이썬 변수에 대한 액세스/쓰기로 변경하는 방법은 무엇입니까?
//access:
value = data[0]
//write:
data[0] = value
것은, 내가 할 것 다음과 같은 내용 :
#define fieldname data[0]
//access:
value = fieldname
//write:
fieldname = value
어떻게하면 파이썬에서 깨끗하게 처리 할 수 있습니까?
EDIT : 이러한 필드는 모두 numpy 행렬 연산을 사용하여 선형 변환으로 업데이트되므로 numpy 배열에 있어야합니다.
편집 : 나는이 방법을 쓸 경우
def fieldname(self):
return self.data[0]
내 접근이 원하는대로 보이는,하지만 같은 방식으로 다시 데이터를 기록 할 수 없습니다.
//access:
value = self.fieldname
(I 객체의 외부 상황에 일반화 문제를 느꼈기 때문에 자신이 전에 코드에서 생략되었다.)
내가 원하는에 가까운 수 있습니다 대입 연산자를 오버로드에 대한이 게시물 : How to Emulate Assignment Operator Overloading in Python?
해결 방법 : 필드 이름을 사용하고 self.data에 필요한 작업을 수행하는 방법을 __getattr__
및 __setattr__
으로 작성하십시오. 제공된 필드 이름이 data가 아닌 다른 속성의 필드 이름과 일치 할 때 호출되지 않으며 이러한 특수 속성의 이름이 제공 될 때 데이터에서 항목을 가져 오는 기능을 추가합니다.
이 방법이 효과가 있는지 알려주는 데 필요한 컨텍스트가 충분하지 않지만 NamedTuple 클래스를 살펴보아야합니다. http://docs.python.org/2/library/collections.html#namedtuple-factory-function-for-tuples- with-named-fields –
파이썬이 참조를 사용하기 때문에 정확히 동일하지는 않습니다.이 경우에는 불변 객체입니다. 'data [0]'의 값이'value'의 값을 변경하면 변경되지 않습니다. 그것은 처음 언급되었을 때의 내용이 될 것입니다. – Keith