1. 模塊
2. 類和對象
3. 類的繼承
目錄【Python程序員都知道的入門知識】
1. 模塊
一個.py
文件相當于一個模塊(module).
導(dǎo)入模塊語法:
import 模塊名
from 模塊名 import 函數(shù)名1剧蹂,函數(shù)名2.。隧膏。菱鸥。
from 模塊名 import *
from module1 import add
add(1 , 2) # 調(diào)用時不需要加模塊名稱:module1.
==================================
import module1
module1.add(1,2) # 這種導(dǎo)入模塊的方式需要在方法前加模塊名稱:module1.
==================================
from module1 import *
add(1,2)
==================================
from module1 import add
from module2 import add # 會覆蓋module1的add方法
add(1 , 2) # 此時調(diào)用的是module2中的add方法
用 dir(模塊名)
查看該模塊中的所有子模塊盯串、變量或函數(shù)。
用 global()
查看所有的全局變量
用 local()
查看所有的局部變量
用 reload(模塊名)
重新導(dǎo)入先前導(dǎo)入過的模塊
那么問題來了齐遵,如何生成包寂玲?
# 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)置的標準庫呢?
詳情請移步官方說明:The Python Standard Library
這里簡要記錄下有哪些常用到的內(nèi)置模塊:
sys #:與系統(tǒng)相關(guān)的模塊
os #:與操作系統(tǒng)相關(guān)的模塊
re #:正則表達式模塊
json #:用于處理JSON字符串的功能模塊
urllib,urllib2 #:用在網(wǎng)絡(luò)請求的功能模塊
想在開發(fā)過程中輕松翻標準庫的源碼梗摇?
PyCharm 也許是個不錯的選擇 , 打好一場仗拓哟,裝備很重要。
鼠標指向你要查看的模塊伶授,比如 os
断序,然后ctrl + 鼠標左鍵流纹,就鏈接到下圖中了:
此外在新建項目的時候,你可以直接選擇創(chuàng)建一個Flask框架的Python項目违诗,或者選擇創(chuàng)建其他框架的Python項目,比如下圖中展示的Django漱凝、Pyramid等等≈畛伲【注意要安裝Profession版的哦茸炒!】
2. 類和對象
2.1. 格式
class ClassName:
"Doc" #:類的說明文檔
class_suite #:類的主體內(nèi)容
<a>注意</a> 類中的函數(shù)中要添加self
作為第一個參數(shù),實際調(diào)用時不需要傳這個參數(shù)阵苇。普通的非類中函數(shù)就不用壁公。
2.2. 內(nèi)置類屬性
ClassName.__doc__
查看類的說明文檔(前后都是兩個下劃線 _
)
ClassName.__module__
查看類所在的模塊
ClassName.__dict__
查看類所有的屬性
ClassName.__bases__
查看類所有的父類
ClassNmae.__name__
查看類的名字
話不多說,先上代碼:
上一張圖中顯示了兩個不同執(zhí)行方式的差別绅项,
import School
上方是直接運行School.py文件紊册,而下方則是通過 import
到入模塊的方式加載School模塊,當自身就是運行體的時候趁怔,.__module__
獲取到的是: __main__
湿硝;而作為模塊導(dǎo)入的時候薪前,得到的就是實實在在的模塊名稱 :School
那么問題來了润努,假設(shè)我在類中定義一個全局變量 objectCount = 0
,并且在初始化init()方法中寫入 Student.objectCount + = 1
會有什么影響?
請看下圖:
可以看出示括,每一個實例出來的對象都對
Student
這個類的全局變量 objectCount
產(chǎn)生了影響铺浇。這一點與Java 就有所不同。這樣看來我們可以輕易地統(tǒng)計到一個類的實例對象了垛膝。
2.3. 屬性
__private_attr
:屬性名稱由兩個下劃線開頭的為私有屬性
__private_method
:函數(shù)名稱由兩個下劃線開頭的為私有函數(shù)
del objName.attrName
刪除屬性
hasattr(obj , name)
是否存在該屬性
setattr(obj , name)
設(shè)置屬性
getattr(obj , name)
獲取屬性值
delattr(obj , name)
刪除屬性
3. 類的繼承
3.1. 格式
class SubClassName (ParentClassName 1,ParentClassName2,......):
"doc"
class_suite
3.2. 特性
- 與Java不同鳍侣,Python中除非在子類中有調(diào)用,否則不會自動調(diào)用父類的初始化方法
__init__
. - 子類中調(diào)用父類方法吼拥,加父類類名前綴倚聚,然后參數(shù)要加入
self
,如:ParentName.parMethod(self)
- 在外部調(diào)用方法時凿可,會先從子類中找方法惑折,找不到才去父類中找
issubclass(sub ,parent)
:判斷是否是誰的子類
isinstance(obj , class)
:判斷是否是某個類的對象
3.3. 自帶的重載方法
__init__(self , arg,...)
初始化方法
__del__(self)
刪除對象
__cmp__(self,obj)
對象比較
__str__(self)
轉(zhuǎn)化成適于人閱讀的形式
__repr__(self)
轉(zhuǎn)化成機器閱讀形式