Python 從另一個檔案匯入類
本教程將解釋在 Python 中從另一個檔案匯入一個類的各種方法。當我們想在程式碼中使用另一個類的方法時,我們需要從另一個檔案中匯入一個類。它可以節省時間,因為我們不必再次實現這些方法,並且使程式碼看起來很乾淨,因為我們不必在當前專案中複製貼上這些方法。
在 Python 中匯入類
我們在程式設計中經常遇到必須重複特定過程的情況。每次都為他們編寫程式碼非常耗時。
我們採用物件導向程式設計 (OOP) 的概念來避免在 Python 中工作時在需要時頻繁使用程式的情況。
本文將演示如何使用不同的方法從 Python 中的另一個檔案中匯入類。
Python 中的 OOP
物件導向程式設計 (OOP) 是 Python 中使用物件和類的程式設計模型。它的目標是使用程式設計來建立現實世界的概念,如繼承、多型性和封裝。
OOP 背後的主要思想是將資料和與之一起操作的演算法組合成一個單元,即使程式的其他部分無法訪問它。
現在,讓我們看一個例子,在這個例子中我們將開發一個函式來執行一些操作,我們將嘗試將它從那個檔案匯入到我們的新檔案中。
首先,讓我們建立一個新檔案 Numsum
,其中包含執行某些功能的類,如下所示。
# python
class Operations:
def __init__(self):
self.sum_ = 0
def To_sum(self,a,b):
self.sum_ = a+b
return self.sum_
我們將把這個檔案匯入到另一個我們想要使用該類及其函式的檔案中。這兩個檔案應位於同一資料夾中,以便於匯入。
匯入檔案後,我們將使用 operations
類並對 2 個數字求和,如下所示。
# python
import Operations from Numsum
obj = Numsum.Operations()
Sum = obj.To_sum(4,12)
print("Sum is :",Sum)
輸出:
從上面的例子中,我們很容易地匯入了 operations
類並使用它的函式來建立 2 個數字的總和。
從 Python 中的另一個檔案匯入多個類
現在,我們將看看如何從另一個檔案中匯入所有類。可能需要從其他檔案匯入所有類。
我們可以使用 from file name import all
命令讀取它。這表明我們已經從提供的檔案中匯入了所有類。
在這種情況下,我們使用 from file name> import *
語句。該語句從檔案中匯入所有類,如下所示。
# python
class Operations:
def __init__(self):
self.sum = 0
def To_sum(self,a,b):
self.sum = a + b
return self.sum
class showData:
def __init__(self):
self.DATA= ""
def show_data(self,INFO):
self.INFO = INFO
return self.INFO
現在我們將從檔案中匯入所有類並在函式中使用它們。如下所示,我們使用*
而不是類名來從檔案中匯入所有類。
# python
from NumSum import *
obj1 = Operations()
print(obj1.To_sum(15,16))
obj2 = showData()
print(obj2.show_data( "Importing Multiple classes from NumSum"))
輸出:
從 Python 中的另一個資料夾匯入類
現在,假設我們要從位於另一個資料夾中的檔案中匯入一個類。讓我們通過一個例子更好地理解它。
我們將使用 Numsum.py 中的 Operations
類,該類位於另一個資料夾中,即 NewFolder。我們還必須指定 NewFolder 的路徑。
為此,我們將使用 sys
模組。看看下面的程式碼。
# python
import sys
sys.path.insert(1,"##")
from NewFolder.Numsum import Operations
obj = Operations()
print(obj.To_sum(15,16))
輸出:
如你所見,我們還可以使用 Python 模組 sys
從放置在其他資料夾中的檔案中匯入類。
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn