2017-10-16 54 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

这样做!谢谢! 相当混乱,知道何时使用全名,何时不是从初学者的角度来看,但我已经开始掌握它的名字了。 –