2017-12-20 30 views
0

두 가지 목적으로 float 유형 변수를 사용해야합니다. 1. 함수의 계산에 값을 사용하려면 2.이 변수의 값을 스스로 변경하십시오. 나는 그것을 일반적으로하는 방법을 알고 있지만, float 형 변수에 대한 간단한 짧은 표기법이 필요합니다. 아래의 예제에서 나는 두 개의 숫자를 더하고 나의 목표는 아래 예제에서 'a.vals [a.define_index [i]]'대신 'f (a, i)'와 같은 문장을 쓸 수 있도록하는 것이다.Python 3에서 변수에 대한 간단한 표현

import numpy as np 
class SomeClass(object): 
    def __init__(self): 
     self.vals=np.ones(10) 
     self.define_index=[] 
     for i in range(10): 
      self.define_index.append(10-1-i) 
a=SomeClass() 
for i in range(10): 
    a.vals[a.define_index[i]]=a.vals[a.define_index[i]]+1 
print('sums =', a.vals) 

답변

2

당신이 당신의 유형에 대한 __getitem____setitem__을 구현하려는 것 같습니다 : 나는 '='의 왼쪽과 '='의 오른쪽에서 두 간단한 표기법을 작성해야합니다. 그것은 당신이 [i]에게 전화하는 것을 허락합니다. 이렇게하면 형식이 목록처럼 보이기 때문에 __iter__을 구현하여 for 루프로 반복 할 수 있습니다.

import numpy as np 
class SomeClass(object): 
    def __init__(self): 
     self.vals=np.ones(10) 
     self.define_index=[] 
     for i in range(10): 
      self.define_index.append(10-1-i) 

    def __getitem__(self, i): 
     return self.vals[self.define_index[i]] 

    def __setitem__(self, i, value): 
     self.vals[self.define_index[i]] = value 

    def __iter__(self): 
     for i in self.define_index: 
      yield self.vals[i] 

a=SomeClass() 
for i in range(10): 
    a[i] += 1 
print('sums =', a.vals) 

for val in a: # iterate over data, hiding define_index 
    print(val) 

추신. 증분을 + = 1로 단축했습니다.