2017-08-24 93 views
-3

我有这个main.py,在它:如何导入python类的模块?

import uuid 
class tools(object): 
    def generate_uuid(self): 
    return self.uuid.uuid4() 
在我的调用程序callmain.py

,我有

import main 
result = main.tool.generate_uuid() 
print ("result") 

,如果我跑我的callmain.py:我得到

"TypeError: generate_uuid() missing 1 required positional argument: 'self'

如果我自己添加到该行 result = main.tool.generate_uuid(self):我得到

NameError: name 'self' is not defined

如何解决这个问题?感谢您的帮助。

+1

为什么会出现这种'tools'类存在吗? – user2357112

+2

1.标题中的拼写错误(模糊)2.该类称为'工具',而不是'工具',3.您需要在调用实例方法之前创建一个对象4.类通常是大写5.自我显式传递到实例方法 – SwiftsNamesake

+0

我正在学习如何使用python导入。工具实际上包含许多其他模块。我只是在学习它的行为。 – peterc

回答

0

因为你应该首先从你的班级制作一个物件。然后调用你的子功能是这样的:

import main 
result = tools() 
result.generate_uuid() 
print(result) # "result" is a string! you should just call result without any "". 
0

如果你想使用一个类的模块,你必须创建一个类第一的实例,如果从实例调用,这样的自我参数传递一个对该类的一个实例的有效引用。例如:

import main 

tools_instance = main.tools() 
result = tools_instance.generate_uuid() 

在您的问题中显示的导入样式看起来像一个包。在软件包中,python文件__init__.py的文件夹可以按照特定的方式进行排列,这里记录为Python Packages。从文档

parent/ 
    __init__.py 
    one/ 
     __init__.py 
    two/ 
     __init__.py 
    three/ 
     __init__.py 

一个例子所以格式

main/ 
    __init__.py 
    tools/ 
     __init__.py # Add function 'generate_uuid' in this file 

的包可以利用如下:

import main 

result = main.tools.generate_uuid() 
print(result)