• 屬性
• 類屬性,直接在類中定義的屬性是類屬性
• 類屬性可以通過類或類的例項訪問到。但是類屬性只能通過類物件來修改,無法通過例項物件修改
• 例項屬性 通過例項物件新增的屬性屬於例項屬性
• 例項屬性只能通過例項物件來訪問和修改,類物件無法訪問修改
• 方法
• 在類中定義,以self為第乙個引數的方法都是例項方法
• 例項方法在呼叫時,python會將呼叫物件以self傳入
• 例項方法可以通過類例項和類去呼叫
• 當通過例項呼叫時,會自動將當前呼叫物件作為self傳入
• 當通過類呼叫時,不會自動傳遞self,我們必須手動傳遞self
• 類方法 在類的內容以@classmethod 來修飾的方法屬性類方法
• 類方法第乙個引數是cls 也會自動被傳遞。cls就是當前的類物件
• 類方法和例項方法的區別,例項方法的第乙個引數是self,類方法的第乙個引數是cls
• 類方法可以通過類去呼叫,也可以通過例項呼叫
• 靜態方法
• 在類中用@staticmethod來修飾的方法屬於靜態方法
• 靜態方法不需要指定任何的預設引數,靜態方法可以通過類和例項呼叫
• 靜態方法,基本上是乙個和當前類無關的方法,它只是乙個儲存到當前類中的函式
• 靜態方法一般都是些工具方法,和當前類無關
classa:
# 類屬性 直接在類中定義的屬性
# 類屬性只能通過類物件修改,無法通過例項物件來修改
count =
0def
__init__
(self)
:# 例項屬性 是通過例項物件新增的屬性
# 例項屬性只能通過例項物件來訪問和修改,類物件無法訪問和修改
self.name =
'葫蘆娃'
# 例項方法 在類中定義,以self為第乙個引數的方法都是例項方法
deftest
(self)
:print
('這是test方法...'
)# 類方法 類方法和例項方法的區別,例項方法的第乙個引數是self,類方法的第乙個引數是cls
# 類方法第乙個引數是cls 也會自動被傳遞。cls就是當前的類物件
# 類方法以@classmethod 來修飾的方法
# 類方法可以通過類呼叫,也可以通過例項呼叫
@classmethod
deftest2
(cls)
:print
('這是test方法,它是乙個類方法'
)print
(cls.count)
# 靜態方法 基本上都是乙個與本類無關的方法,用@staticmethod來修飾的方法屬於靜態方法
# 靜態方法不需要指定任何的預設引數,靜態方法可以通過類和例項呼叫
# 靜態方法一般都是些工具方法,和當前類無關
@staticmethod
deftest3()
:print
('是test方法,它是乙個靜態方法'
)
a = a(
)# 例項屬性,通過例項物件新增的屬性稱為例項屬性
a.count =
20print
(a.count)
# 0print
(a.count)
# 20
print
(『a』,a.name)
print
('a'
,a.name)
a.test(
)a.test(a)
# 用類物件去呼叫例項方法,需要傳遞例項化物件,否則不知道找哪個例項的方法
a.test2(
)a.test2(
)
模組化將乙個完整的程式分成乙個個小模組
通過模組組合搭建乙個完整的程式
模組化的優點;
方便開發
方便維護
模組復用
在python當中乙個py檔案就是乙個模組
在乙個模組中引入外部模組,可以引入同乙個模組多次,但是模組的例項只會執行一次
import 模組名
模組名就是python的檔名
import 模組名 as 模組別名
在乙個模組內部都有乙個__name__,通過print(name)可以獲取模組的名字(不在主檔案中執行);
如果print(name)在py檔案直接執行時,那麼__name__預設等於字串』main』。__name__屬性值為__main__的模組是主模組。乙個程式中只有乙個主模組
訪問模組中的變數–>模組名.變數名
訪問模組中的函式–>模組名.函式名
訪問模組中的物件–>模組名.物件名
我們也可以引入模組中部分內容
from 模組名 import 變數,變數…
還有一種引入方式
from 模組名 import 變數 as 別名
舊的列表 —> 新的列表
語法:[表示式 for 變數 in 舊的列表]
[表示式 for 變數 in 舊的列表 if 條件]
# 找到長度大於3的人名
lst =
['jerry'
,'tony'
,'tom'
,'mok'
,'abcd'
]def
fn(lst)
: new_lst =
for name in lst:
iflen
(name)
>
3:
# 找到長度大於3的人名
lst =
['jerry'
,'tony'
,'tom'
,'mok'
,'abcd'
]r =
[name.capitalize(
)for name in lst if
len(name)
>3]
print
(r)
# 1-100能被3整除的列表
new_lst =
[n for n in
range(1
,101
)if i %3==
0]print
(new_lst)
有一種一邊迴圈一邊計算的機制,稱為生成器
建立生成器的方法
通過列表推導式
# 需求: 得到乙個0-10之間的數,並和3相差的列表
# new_lst = [i * 3 for i in range(10)]
# print(new_lst)
g =(i *
3for i in
range(10
))print
(type
(g))
# print
(g)#
# 方式一 __next__() 獲得元素
print
(g.__next__())
# 0print
(g.__next__())
# 3# 方式二 next()函式 獲取元素
print
(next
(g))
# 6print
(next
(g))
# 9print
(next
(g))
# 12
print
(next
(g))
# 15
# 當所有元素均生成後繼續再呼叫會報錯
通過函式來完成
只要在函式中新增yield關鍵字,該函式就會變成乙個生成器
a. 定義乙個函式,函式中使用yield關鍵字
b. 呼叫函式,接收呼叫結果
c. 得到的結果就是乙個生成器
d. 通過next()和__next__()就可以獲取生成器的元素
deffn(
):n =
0while
true
: n +=
1yield n
n = fn(
)print
(n)#
print
(next
(n))
# 1print
(next
(n))
# 2
python入門14模組
1.模組概述 為了解決難以維護的問題,我們把很多相似功能的函式分組,分別放到不同的檔案中。這樣每個檔案所包含的內容相對較少,而且對於每乙個檔案的大致功能可用檔名來體現 優點 1.提高 的可維護性 2.提高了 的復用度,當乙個模組完畢,可以被多個地方引用 3.引用其他的模組 內建模組和第三方模組和自定...
python成長之路day14
1 什麼是裝飾器 器指的是工具 裝飾指的是為被裝飾物件新增額外的功能 大白話 定義裝飾器就是定義了乙個函式,該函式就是用來為其他函式新增額外的功能 2 為何要用裝飾器 程式的開發徐亞哦遵循乙個原則 開放封閉原則 開放 值得是對拓展功能開放 封閉 指的是對修改源 封閉 def func sdfasd ...
python 入門之路(3)
1.1 表示式 由數字 算符 數字分組符號 自由變數和約束變數等以求得數值的有意義排列方法所得的組合 其特點包括表示式一般僅僅用於計算一些結果,不會對程式產生實質性的影響 如果在互動模式中輸入乙個表示式,直譯器會自動將表示式的結果輸出 如在pycharm中輸入 2 3print 2 3 1.2 語句...