2017-12-12 27 views
1

아래 'v3'이 작동하지 않고 특성 오류가 발생하는 이유를 알아 내려고하고 있습니다. v1 및 v2가 v3이 아닌 작동하게 만드는 이유는 무엇입니까? 코드는 짧고 재현성이 있으며 설명이 필요하지 않을 정도로 간단하다고 생각하지만 명확하지 않은 부분이 있으면 알려주세요. func가 존재하지만 ex.func하지 않기 때문에클래스, 개체 및 메서드에 대한 혼동 python

import numpy as np 
import pandas as pd 

class Example(object): 
    def __init__(self, ts_df): 
     self.all_df = ts_df 

    def simple_av(self, lookback=""): 
     self.agg = self.all_df.mean(axis=1) 

class Example_two(object): 
    def __init__(self, ts_df, method): 
     self.ts = ts_df 
     self.method = method 

    def apply_method(self, **kwargs): 
     self.output = self.method(self.ts, **kwargs) 

ts = pd.DataFrame(np.random.rand(100,2)) 

'''v1''' 
ex = Example(ts) 
ex.simple_av() 
print (ex.agg.head()) 

'''v2''' 
func = pd.rolling_mean 
ex = Example_two(ts, func) 
req_args = dict({'window': 3}) 
ex.apply_method(**req_args) 
print (ex.output.head()) 

'''v3''' 
func = Example.simple_av 
ex= Example(ts) 
ex.func() 

답변

2

세 번째 예는 실패합니다. ex.funcExample 클래스의 속성에서 "func"을 조회하고 실패합니다. 에 해당

func(ex) 

:

당신은 첫 번째 인수로 ex를 전달 절차 스타일 func를 호출 할 수

ex.simple_av() 

(2 첫 번째 예는 정의 된 메소드에 호출을 사용, 그래서 작동)