2014-06-17 23 views
0

我使用的是Anaconda發行版中的Python 2.7。我試圖將複雜的數據集成過程組織到不同的類和函數中,以便更好地管理它。如何從單獨的類執行函數?

作爲簡化實例,我有過程的某些部分在稱爲function_test.py

import pandas as pd 
import numpy as np 

class Perform: 
    def work(self): 
     test_df = pd.DataFrame(np.random.randn(10,4), columns=['a','b','c','d']) 
     print "really?" 
     print test_df 

我想打電話和從function_call.py這是在相同的目錄執行上述邏輯文件:

import function_test 

perform = function_test.Perform 
perform.work 

但是,當我執行function_call.py時,我收到以下消息,並且什麼也不打印。

UMD has deleted: function_test 

如何設置此示例,以便導入並執行function_test,以便test_df可在function_call.py中使用?

任何意見表示讚賞。

回答

1

首先,不要使用舊樣式類,像這樣:

class Perform: 
    pass 

使用新型類:

class Perform(object): 
    pass 

接下來,你應該記住 - work方法Perform。所以你應該首先實例化它:

perform = function_test.Perform() 
perform.work() 

它現在工作嗎?

+0

它執行並從function_test.py中打印。如何使function_call.py中的test_df可用?我添加了print test_df.dtypes,並且我得到了'test_df'未定義的錯誤。 – analyticsPierce

+0

你可以從函數返回它:'return test_df'並使用:'test_df = perform.work()' – dt0xff

1

加括號。

perform = function_test.Perform() 
perform.work() 
相關問題