/

Python物件

Python物件

在Python中,一切皆為物件。

甚至基本資料型別(整數、字串、浮點數等)的值也都是物件。串列是物件,元組、字典等等都是物件。

物件具有屬性方法,可以使用點語法來存取它們。

例如,嘗試定義一個新的 int 型別的變數:

1
age = 8

現在,age 可以存取所有 int 物件的屬性和方法。

例如存取該數字的實部和虛部:

1
2
3
4
5
6
print(age.real) # 8
print(age.imag) # 0

print(age.bit_length()) # 4

# bit_length() 方法返回以二進制表示該數字所需要的位元數

存放串列值的變數則有不同的一組方法:

1
2
3
items = [1, 2]
items.append(3)
items.pop()

方法的可用性取決於值的類型。

Python 提供的 id() 全域函數可讓您檢查特定物件在內存中的位置。

1
id(age) # 140170065725376

你的記憶體位置將會不同,這只是一個示範

如果將不同的值分配給變數,它的位置將會變化,因為變數的內容已被替換為另一個位於記憶體中的位置的值:

1
2
3
4
5
6
7
age = 8

print(id(age)) # 140535918671808

age = 9

print(id(age)) # 140535918671840

但如果使用物件的方法修改物件,其位置將保持不變:

1
2
3
4
5
6
7
8
items = [1, 2]

print(id(items)) # 140093713593920

items.append(3)

print(items) # [1, 2, 3]
print(id(items)) # 140093713593920

只有在將變數重新分配給另一個值時,位置才會變化。

某些物件是可變的,而某些物件則是不可變的。這取決於物件本身。如果物件提供了變更其內容的方法,那麼它就是可變的。否則,它就是不可變的。Python 定義的大多數類型都是不可變的。例如,int 是不可變的。它沒有改變值的方法。如果您使用以下方式增加值:

1
2
3
4
5
6
age = 8
age = age + 1

#或者

age += 1

並且使用 id(age) 檢查,您會發現 age 指向不同的記憶體位置。原始值沒有變異,我們切換到了另一個值。

tags: [“程式語言”, “Python”, “物件導向”]