2017-08-24 188 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)