Python中如何導(dǎo)入類示例詳解
前言
隨著我們不斷地在一個文件中添加新的功能, 就會使得文件變得很長。 即便使用了繼承,也抑制不住類的成長。為了解決這一問題,我們可以將類存儲在模塊中, 然后在主程序中導(dǎo)入所需的模塊,這樣可以讓文件盡可能保持整潔,從而實現(xiàn)更好的管理。
導(dǎo)入類是一種很有效的編程方式。 這樣我們就可以把大部分邏輯存儲在獨立的文件中,然后在主程序編寫高級邏輯咯O(∩_∩)O哈哈~
1 導(dǎo)入一個類
假設(shè)有一個 User 類,文件名為 User.py,這個待導(dǎo)入的文件,一般稱為模塊:
class User():
'''賬號信息'''
def __init__(self, name, pwd):
'''初始化'''
self.name = name
self.pwd = pwd
# 登陸次數(shù)
self.login_count = 0
def print_login_count(self):
'''打印登陸次數(shù)'''
print('登陸次數(shù)=' + str(self.login_count))
def update_login_count(self, num):
'''更新登陸次數(shù)'''
self.login_count = num
def valid(self):
'''是否驗證通過'''
print(self.name + ' 驗證通過')
我們再定義一個名為 deniro.py 的文件,來導(dǎo)入剛剛定義的 User 類:
from User import User
deniro = User('deniro', '1')
print('賬號名:' + deniro.name)
運(yùn)行結(jié)果:
賬號名:deniro
2 導(dǎo)入一個模塊多個類
可以根據(jù)需要,在同一個模塊中定義任意數(shù)量的類,不過這些在同一個模塊中的類最好是相關(guān)的。
我們在 User.py 中定義了一個 Privilege 類,并作為 User 類的屬性:
class User(): '''賬號信息''' def __init__(self, name, pwd): '''初始化''' self.name = name self.pwd = pwd # 登陸次數(shù) self.login_count = 0 # 擁有的權(quán)限 self.privileges = Privilege(['修改某某賬號密碼', '禁用某某賬號']) def print_privileges(self): '''打印擁有的權(quán)限''' print(self.privileges.contents) ... class Privilege(): '''權(quán)限''' def __init__(self, contents): self.contents = contents
然后在新的文件中調(diào)用它:
# 導(dǎo)入一個類
from User import User
deniro = User('deniro', '1')
print('擁有的權(quán)限:' + str(deniro.privileges.contents))
運(yùn)行結(jié)果:
擁有的權(quán)限:['修改某某賬號密碼', '禁用某某賬號']
3 導(dǎo)入多個類
可以在一個模塊中導(dǎo)入多個類, 用逗號分隔這些需要導(dǎo)入類。 導(dǎo)入后, 就可以根據(jù)應(yīng)用場景,來創(chuàng)建任意數(shù)量的類實例。
from User import User,Privilege
from User import User,Privilege
p=Privilege(["刪除賬號權(quán)限"])
print('權(quán)限內(nèi)容:'+str(p.contents))
運(yùn)行結(jié)果:
權(quán)限內(nèi)容:['刪除賬號權(quán)限']
4 導(dǎo)入模塊
我們還可以一次性導(dǎo)入整個模塊, 這需要使用句點表示法來調(diào)用相應(yīng)的類:
import User ... p=User.Privilege(["刪除賬號權(quán)限"]) ...
4 導(dǎo)入所有類
from User import *
非必要,不使用這種導(dǎo)入方式,因為:
- 通過文件開頭定義良好的 import 語句, 我們就可以清楚地知道使用了哪些類。但這種導(dǎo)入方式?jīng)]有提供這種好處。
- 如果不小心導(dǎo)入了一個與本程序文件中同名的類, 就會引發(fā)難以診斷的錯誤。
如果確實需要從一個模塊中導(dǎo)入很多類,那么建議導(dǎo)入整個模塊, 然后使用 module_name.class_name 語法來調(diào)用它們。
5 在模塊中導(dǎo)入另一個模塊
為了避免模塊太大或者保證模塊中的類都是相關(guān)的, 這時就需要將類分散到多個模塊中。這樣, 可能一個模塊中的類會依賴另一個模塊中的類。這種場景下, 我們就會在一個模塊中導(dǎo)入另一個模塊。因為導(dǎo)入語法相同,所以在此就不贅述啦O(∩_∩)O~
建議一開始讓代碼結(jié)構(gòu)盡可能簡單。 即先盡可能在一個文件中完成所有的工作, 確定一切都能滿足業(yè)務(wù)要求正確執(zhí)行后,再將類移到獨立的模塊中。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
- Python創(chuàng)建模塊及模塊導(dǎo)入的方法
- python根據(jù)路徑導(dǎo)入模塊的方法
- 詳解Python中的相對導(dǎo)入和絕對導(dǎo)入
- Python導(dǎo)入txt數(shù)據(jù)到mysql的方法
- Python導(dǎo)入模塊時遇到的錯誤分析
- Python使用xlrd模塊操作Excel數(shù)據(jù)導(dǎo)入的方法
- Python導(dǎo)入oracle數(shù)據(jù)的方法
- Python3導(dǎo)入自定義模塊的三種方法詳解
- Python中幾種導(dǎo)入模塊的方式總結(jié)
- python Django批量導(dǎo)入數(shù)據(jù)
相關(guān)文章
python?pandas?數(shù)據(jù)排序的幾種常用方法
這篇文章主要介紹了python?pandas數(shù)據(jù)排序的幾種常用方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
從零學(xué)python系列之新版本導(dǎo)入httplib模塊報ImportError解決方案
在使用新版python打開舊版本代碼的時候,可能會有些報錯或者不兼容的情況出現(xiàn),今天我們就來分析其中的一種情況2014-05-05
從0開始的Python學(xué)習(xí)014面向?qū)ο缶幊蹋ㄍ扑])
這篇文章主要介紹了Python面向?qū)ο缶幊?,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Python教程pandas數(shù)據(jù)分析去重復(fù)值
Pandas指定行進(jìn)行去重更新值,加載數(shù)據(jù)sample抽樣函數(shù),指定需要更新的值append直接添加append函數(shù)用法,根據(jù)某一列key值進(jìn)行去重key唯一2021-09-09

