2017-10-16 55 views
1

問題:我在調用程序中的類時遇到問題。Python:將類定義從一個.py導入到另一個問題時遇到問題

我創建了一個名爲程序,其example.py具有下面的代碼:

class ExampleBase: 

""" 
This is the ExampleBase class 
""" 

def __init__(self, company_name="N/A", stock_dict={}): 
    """ 
    class constructor 
    """ 
    self.company_name = company_name 
    self.stock_dict = stock_dict  
    return 

def __str__(self): 
    """ 
    Prints the company name string 
    """   
    str = "The Company name is: %s" %\ 
     (self.company_name 
     ) 

    return str 


def add_purchase(self, addtlSTK): 
    """ 
    Adds item to stock_dict 
    """ 
    self.stock_dict.update(addtlSTK) 
    return 

我試圖打電話給ExampleBase在其代碼是另一個程序:

import example 

if __name__ == "__main__": 
    a = {"10-01-2014":(10, 11.25), "10-02-2014":(11, 12.25), "10-03-2014":(12, 13.25)} 
    b = example.ExampleBase("Bern", a) 
+1

有什麼問題和/或錯誤,你正在得到? – GWW

+0

你是否正確縮進第一個文件?所有函數調用都應該從類中縮進例如: – smb564

+0

可能的重複項:https://stackoverflow.com/a/4142178/3991696 –

回答

1

與唯一的問題你的代碼是example.py的錯誤縮進。這些方法必須在類下縮進。還要確保這兩個python文件都在同一個文件夾中。

這裏是縮進example.py,

class ExampleBase: 

    """ 
    This is the ExampleBase class 
    """ 

    def __init__(self, company_name="N/A", stock_dict={}): 
     """ 
     class constructor 
     """ 
     self.company_name = company_name 
     self.stock_dict = stock_dict 
     return 

    def __str__(self): 
     """ 
     Prints the company name string 
     """ 
     str = "The Company name is: %s" % \ 
       (self.company_name 
       ) 

     return str 


    def add_purchase(self, addtlSTK): 
     """ 
     Adds item to stock_dict 
     """ 
     self.stock_dict.update(addtlSTK) 
     return 
+0

好吧,檢查縮進後,構造函數似乎運行良好。 謝謝! –

0

好了,檢查後縮進的構造看上去一切正常。我現在正在嘗試做更多的事情,並且崩潰。這裏是代碼我試圖運行:

import example 

if __name__ == "__main__": 
    a = {"10-01-2014":(10, 11.25), "10-02-2014":(11, 12.25), "10-03-2014":(12, 13.25)} 
    b = example.ExampleBase("Bern", a) 
    c = {"10-04-2014":(13, 14.25)} 
    b.example.ExampleBase.add_purchase(c) 
    print(b) 

我現在看到的錯誤是: AttributeError的:「ExampleBase」對象有沒有屬性「比如」

+0

用b.add_purchase(c)替換b.example.ExampleBase.add_purchase(c)。變量b是ExampleBase()的一個實例。因此你可以直接調用它的方法。 –

+0

這樣做!謝謝! 相當混亂,知道何時使用全名,何時不是從初學者的角度來看,但我已經開始掌握它的名字了。 –