python如何匯入類

z_paul發表於2021-09-11

python如何匯入類

匯入類是一種很有效的程式設計方式。 這樣我們就可以把大部分邏輯儲存在獨立的檔案中,然後在主程式編寫高階邏邏輯。

1 匯入一個類

假設有一個 User 類,檔名為 User.py,這個待匯入的檔案,一般稱為模組:

class User():
 '''賬號資訊'''
 
 def __init__(self, name, pwd):
  '''初始化'''
  self.name = name
  self.pwd = pwd
  # 登陸次數
  self.login_count = 0
 
 def print_login_count(self):
  '''列印登陸次數'''
  print('登陸次數=' + str(self.login_count))
 
 def update_login_count(self, num):
  '''更新登陸次數'''
  self.login_count = num
 
 def valid(self):
  '''是否驗證透過'''
  print(self.name + ' 驗證透過')

我們再定義一個名為 deniro.py 的檔案,來匯入剛剛定義的 User 類:

from User import User
deniro = User('deniro', '1')
print('賬號名:' + deniro.name)

執行結果

賬號名:deniro

2 匯入一個模組多個類

可以根據需要,在同一個模組中定義任意數量的類,不過這些在同一個模組中的類最好是相關的。

我們在 User.py 中定義了一個  Privilege 類,並作為 User 類的屬性:

class User():
 '''賬號資訊''' 
 def __init__(self, name, pwd):
  '''初始化'''
  self.name = name
  self.pwd = pwd
  # 登陸次數
  self.login_count = 0
  # 擁有的許可權
  self.privileges = Privilege(['修改某某賬號密碼', '禁用某某賬號'])
 
 def print_privileges(self):
  '''列印擁有的許可權'''
  print(self.privileges.contents) 
...
class Privilege():
 '''許可權''' 
 def __init__(self, contents):
  self.contents = contents

然後在新的檔案中呼叫它:

# 匯入一個類
from User import User
deniro = User('deniro', '1')
print('擁有的許可權:' + str(deniro.privileges.contents))

執行結果

擁有的許可權:['修改某某賬號密碼', '禁用某某賬號']

3 匯入多個類

可以在一個模組中匯入多個類, 用逗號分隔這些需要匯入類。 匯入後, 就可以根據應用場景,來建立任意數量的類例項。

from User import User,Privilege

from User import User,Privilege
 
p=Privilege(["刪除賬號許可權"])
print('許可權內容:'+str(p.contents))

執行結果

許可權內容:['刪除賬號許可權']

4 匯入模組

我們還可以一次性匯入整個模組, 這需要使用句點表示法來呼叫相應的類:

import User
...
p=User.Privilege(["刪除賬號許可權"])
...

匯入所有類

from User import *

非必要,不使用這種匯入方式,因為:

透過檔案開頭定義良好的 import 語句, 我們就可以清楚地知道使用了哪些類。但這種匯入方式沒有提供這種好處。

如果不小心匯入了一個與本程式檔案中同名的類, 就會引發難以診斷的錯誤。

如果確實需要從一個模組中匯入很多類,那麼建議匯入整個模組, 然後使用 module_name.class_name 語法來呼叫它們。

5 在模組中匯入另一個模組

為了避免模組太大或者保證模組中的類都是相關的, 這時就需要將類分散到多個模組中。這樣, 可能一個模組中的類會依賴另一個模組中的類。這種場景下, 我們就會在一個模組中匯入另一個模組。因為匯入語法相同,所以在此就不贅述啦O(∩_∩)O~

建議一開始讓程式碼結構儘可能簡單。 即先儘可能在一個檔案中完成所有的工作, 確定一切都能滿足業務要求正確執行後,再將類移到獨立的模組中。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/75/viewspace-2836630/,如需轉載,請註明出處,否則將追究法律責任。

相關文章