2013-08-14 1 views
0

파이썬에서 아직 인스턴스화되지 않은 객체에 대한 클래스의 함수를 인스턴스화하는 방법이 있다면 아는 사람 있습니까?인스턴스화되지 않은 객체에 대한 클래스 함수를 인스턴스화하는 방법은 무엇입니까?

class C(): 
    def __init__(self, var): 
     self.var = var 
    def f1(self): 
     self.var += 1 
    def f2(self): 
     self.var += 2 

cond = True 
if cond : f = C.f1 
else:  f = C.f2 

for i in xrange(1e7): 
    a = C(1) 
    for j in xrange(1e3): 
     a.f() 

목표는 '분'으로 'F'를 사용할 수있게하는 것입니다, '최대'또는 시작 부분에 nparrays에 대한 '평균'각 루프에서 확인 작동하지 : 나는 이런 식으로 뭔가를 싶습니다 사용.

+0

'f = rand() .min' 그리고 나서'f (a)'? – Torxed

+0

'rand()'가 스칼라를 반환하기 때문에 작동하지 않습니다. 'f = a.min' 그리고 나서'f()'는 작동하지만 제 경우에는'a'가 바뀔 수 있습니다. – Gmoaltos

+0

결코'pylab'을 사용한 적이 없으므로 직감에 댓글을 달았고 내 질문은 무시했습니다. – Torxed

답변

0

ab의 유형은 numpy.ndarray입니다. 당신은 ndarray을 가져온, 그래서 당신은 단순히 abndarray.min를 호출 할 수

다음
f = ndarray.min 
print f(a), f(b) 

, ndarray.min(x)x.min()에 해당합니다. 전화의 종류의 명시 적 지식없이 numpy.ndarray.min을 받고

편집rand에 :

f = type(rand(int())).min 

참고하면 여전히이 유형은 min 기능이 설정되어 있는지 알 필요가있다.

+0

감사합니다. – Gmoaltos

+0

하지만 ndarray.min이 없을 때 어떻게해야합니까? 'C' 클래스가'f1','f2'와'a'가'C' 객체로 인스턴스화되지 않았다면'f'를'C.f1'이나'C.f2'로 쓰는 방법은 무엇입니까? – Gmoaltos

+0

@Gmoaltos 아마도 예를 들어 설명 할 수 있습니다. 왜냐하면 내가 요구하는 것을 이해하지 못하기 때문입니다. – juanchopanza

0

함수를 "인스턴스화"하지 않습니다. 클래스의 인스턴스로서 객체를 인스턴스화합니다.

이제 클래스의 메서드를 호출하여 클래스 klass의 클래스 메서드를 호출하기 만하면됩니다.

rand.mina에서 호출 할 수있는 함수이면 rand.min(a) 또는 f(a) 일뿐입니다.

+0

나는 정말로 이해하지 못했습니다. 보통'a.min()'을하고'y = rand.min'을 할 수 없습니다. – Gmoaltos

+0

@Gmoaltos "보통"을 의미합니까? – Marcin

+0

아니요, 죄송합니다. 알 겠어. 고맙습니다. – Gmoaltos

관련 문제