Python程序員都知道的入門(mén)知識(shí)の四

1. 模塊
2. 類(lèi)和對(duì)象
3. 類(lèi)的繼承
目錄【Python程序員都知道的入門(mén)知識(shí)】

python自學(xué)之路

1. 模塊

一個(gè).py文件相當(dāng)于一個(gè)模塊(module).
導(dǎo)入模塊語(yǔ)法:

import 模塊名
from 模塊名 import 函數(shù)名1,函數(shù)名2.。。。
from 模塊名 import *
from module1 import add
add(1 , 2) # 調(diào)用時(shí)不需要加模塊名稱:module1.
==================================
import module1
module1.add(1,2) # 這種導(dǎo)入模塊的方式需要在方法前加模塊名稱:module1.
==================================
from module1 import *
add(1,2)
==================================
from module1 import add 
from module2 import add # 會(huì)覆蓋module1的add方法
add(1 , 2) # 此時(shí)調(diào)用的是module2中的add方法

dir(模塊名) 查看該模塊中的所有子模塊、變量或函數(shù)。
global() 查看所有的全局變量
local() 查看所有的局部變量
reload(模塊名) 重新導(dǎo)入先前導(dǎo)入過(guò)的模塊

那么問(wèn)題來(lái)了,如何生成包?

# Student.py  ==============
   score()
# Lesson.py  ===============
   lesson()
# Class.py  ================
from Lessonimport lesson
from Student import score
# user ====================
import Class# 導(dǎo)入Class包
Class.score()
Class.lesson()

Python有哪些內(nèi)置的標(biāo)準(zhǔn)庫(kù)呢?

詳情請(qǐng)移步官方說(shuō)明:The Python Standard Library
這里簡(jiǎn)要記錄下有哪些常用到的內(nèi)置模塊:

sys #:與系統(tǒng)相關(guān)的模塊
os  #:與操作系統(tǒng)相關(guān)的模塊
re  #:正則表達(dá)式模塊
json #:用于處理JSON字符串的功能模塊
urllib,urllib2 #:用在網(wǎng)絡(luò)請(qǐng)求的功能模塊

想在開(kāi)發(fā)過(guò)程中輕松翻標(biāo)準(zhǔn)庫(kù)的源碼?

PyCharm 也許是個(gè)不錯(cuò)的選擇 , 打好一場(chǎng)仗,裝備很重要。
鼠標(biāo)指向你要查看的模塊,比如 os ,然后ctrl + 鼠標(biāo)左鍵,就鏈接到下圖中了:

Paste_Image.png

此外在新建項(xiàng)目的時(shí)候,你可以直接選擇創(chuàng)建一個(gè)Flask框架的Python項(xiàng)目,或者選擇創(chuàng)建其他框架的Python項(xiàng)目,比如下圖中展示的Django、Pyramid等等?!咀⒁庖惭bProfession版的哦!】


Paste_Image.png

2. 類(lèi)和對(duì)象

2.1. 格式

class ClassName:
    "Doc"  #:類(lèi)的說(shuō)明文檔
    class_suite #:類(lèi)的主體內(nèi)容

<a>注意</a> 類(lèi)中的函數(shù)中要添加self 作為第一個(gè)參數(shù),實(shí)際調(diào)用時(shí)不需要傳這個(gè)參數(shù)。普通的非類(lèi)中函數(shù)就不用。

2.2. 內(nèi)置類(lèi)屬性

ClassName.__doc__ 查看類(lèi)的說(shuō)明文檔(前后都是兩個(gè)下劃線 _
ClassName.__module__ 查看類(lèi)所在的模塊
ClassName.__dict__ 查看類(lèi)所有的屬性
ClassName.__bases__ 查看類(lèi)所有的父類(lèi)
ClassNmae.__name__ 查看類(lèi)的名字

話不多說(shuō),先上代碼:


Paste_Image.png

Paste_Image.png

上一張圖中顯示了兩個(gè)不同執(zhí)行方式的差別, import School 上方是直接運(yùn)行School.py文件,而下方則是通過(guò) import到入模塊的方式加載School模塊,當(dāng)自身就是運(yùn)行體的時(shí)候,.__module__獲取到的是: __main__ ;而作為模塊導(dǎo)入的時(shí)候,得到的就是實(shí)實(shí)在在的模塊名稱 :School

那么問(wèn)題來(lái)了,假設(shè)我在類(lèi)中定義一個(gè)全局變量 objectCount = 0,并且在初始化init()方法中寫(xiě)入 Student.objectCount + = 1會(huì)有什么影響?
請(qǐng)看下圖:

Paste_Image.png

可以看出,每一個(gè)實(shí)例出來(lái)的對(duì)象都對(duì) Student 這個(gè)類(lèi)的全局變量 objectCount 產(chǎn)生了影響。這一點(diǎn)與Java 就有所不同。這樣看來(lái)我們可以輕易地統(tǒng)計(jì)到一個(gè)類(lèi)的實(shí)例對(duì)象了。

2.3. 屬性

__private_attr :屬性名稱由兩個(gè)下劃線開(kāi)頭的為私有屬性
__private_method :函數(shù)名稱由兩個(gè)下劃線開(kāi)頭的為私有函數(shù)
del objName.attrName 刪除屬性
hasattr(obj , name) 是否存在該屬性
setattr(obj , name) 設(shè)置屬性
getattr(obj , name) 獲取屬性值
delattr(obj , name) 刪除屬性

3. 類(lèi)的繼承

3.1. 格式

class SubClassName (ParentClassName 1,ParentClassName2,......):
    "doc"
    class_suite

3.2. 特性

  • 與Java不同,Python中除非在子類(lèi)中有調(diào)用,否則不會(huì)自動(dòng)調(diào)用父類(lèi)的初始化方法 __init__.
  • 子類(lèi)中調(diào)用父類(lèi)方法,加父類(lèi)類(lèi)名前綴,然后參數(shù)要加入 self,如:ParentName.parMethod(self)
  • 在外部調(diào)用方法時(shí),會(huì)先從子類(lèi)中找方法,找不到才去父類(lèi)中找

issubclass(sub ,parent) :判斷是否是誰(shuí)的子類(lèi)
isinstance(obj , class) :判斷是否是某個(gè)類(lèi)的對(duì)象

3.3. 自帶的重載方法

__init__(self , arg,...) 初始化方法
__del__(self) 刪除對(duì)象
__cmp__(self,obj) 對(duì)象比較
__str__(self) 轉(zhuǎn)化成適于人閱讀的形式
__repr__(self) 轉(zhuǎn)化成機(jī)器閱讀形式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,055評(píng)論 0 9
  • 每個(gè)行業(yè)、每種商業(yè)模式都可以用三點(diǎn)核心要素來(lái)理解:產(chǎn)品、營(yíng)銷(xiāo)和渠道。產(chǎn)品自然是指行業(yè)提供的產(chǎn)品和服務(wù)本身,而營(yíng)銷(xiāo)是...
    louiselinlin閱讀 562評(píng)論 0 0
  • 樹(shù)上葉子還綠。落葉卻已積了滿地。 鳥(niǎo)兒隱藏在上個(gè)季末以及蟬鳴隱藏在這個(gè)季初。 氣溫表上的數(shù)字像一只松鼠的心率,隨著...
    鈴木結(jié)愛(ài)閱讀 493評(píng)論 0 2
  • 用戶管理 如何創(chuàng)建另外一個(gè)用戶?如何區(qū)分訪客用戶及其他用戶?各種用戶的區(qū)別是什么? Android是怎么限制最多用...
    人海中一只羊閱讀 24,190評(píng)論 3 9
  • 瓦片、石子和沙包是我們童年的美好回憶,我們那時(shí)候父母似乎沒(méi)有買(mǎi)玩具的想法。 我們?nèi)亲约褐圃?。童?..
    4點(diǎn)半的恩賜閱讀 179評(píng)論 0 0

友情鏈接更多精彩內(nèi)容