Python中類-帶括號與不帶括號的區別


類不帶括號我們叫賦值,帶括號我們叫實例化。

什么是賦值?

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM