類不帶括號我們叫賦值,帶括號我們叫實例化。
什么是賦值?
a=7
b=a
id(7)
140726814208448
id(a)
140726814208448
id(b)
140726814208448
從上面例子中我們可以看出變量a賦值7、b賦值a,它們的內存地址都是相同的。
它們是指向了同一個內存地址,而不是 b 指向 a 然后a在指向內存地址。
不是:
注:id() 函數用於獲取對象的內存地址。
什么是實例化?
“類提供默認行為,是實例的工廠”
怎么理解這句話呢?所謂工廠,就是可以用同一個模子做出很多具體的產品。類就是那個模子,實例就是具體的產品。所以,實例是程序處理的實際對象。
類是由一些語句組成,但是實例,是通過調用類生成,每次調用一個類,就得到這個類的新的實例。
不帶括號-賦值
class Tea:
def __init__(self):
print('Dahongpao Tea')
a = Tea
print(id(Tea)) # 2186368764424
print(id(a)) # 2186368764424
print(a) # <class '__main__.Tea'>
print(Tea) # <class '__main__.Tea'>
從上面例子中輸出的內容我們可以看出:
a = Tea類 所指向的是同一內存地址,而在第一點我們已經知道,賦值就是指向同一內存地址,所以得出不帶括號的是賦值。
帶括號-實例化
class Tea:
def __init__(self):
print('Dahongpao Tea')
b = Tea()
print(id(Tea))
print(id(b))
print(Tea)
print(b)
輸出結果為:
Dahongpao Tea # 這是__init__輸出的
1386207499400 # print(id(Tea))
1386196961736 # print(id(b))
<class '__main__.Tea'> # print(Tea)
<__main__.Tea object at 0x00000142BFC709C8> # print(b)
從上面例子中輸出結果最后我們可以知道
b為Tea類實例化一個對象而且他們的內存地址也一樣了
python 類 - 帶括號是實例化,不帶括號是賦值。
————————————————
版權聲明:本文為CSDN博主「無夢生7」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/s1156605343/article/details/104275730