Python对象的实例教程

126 阅读2分钟

Python中所有的东西都是一个对象。

甚至基本原始类型的值 (整数、字符串、浮点...) 也是对象。列表是对象,图元,字典,都是对象。

对象有属性方法,可以用点语法来访问。

例如,试着定义一个类型为int 的新变量。

age 现在可以访问为所有 对象定义的属性和方法。int

这包括,例如,访问该数字的实部和虚部。

print(age.real) # 8
print(age.imag) # 0

print(age.bit_length()) #4

# the bit_length() method returns the number of bits necessary to represent this number in binary notation

一个持有列表值的变量可以访问一组不同的方法。

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

这些方法取决于值的类型。

Python提供的id() 全局函数可以让你检查一个特定对象在内存中的位置。

id(age) # 140170065725376

你的内存值会发生变化,我只是作为一个例子来展示它

如果你给变量分配一个不同的值,它的地址将会改变,因为变量的内容已经被存储在内存中另一个位置的另一个值所取代。

age = 8

print(id(age)) # 140535918671808

age = 9

print(id(age)) # 140535918671840

但是如果你使用对象的方法来修改它,地址就会保持不变。

items = [1, 2]

print(id(items)) # 140093713593920

items.append(3)

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

只有当你把一个变量重新赋值给另一个值时,地址才会改变。

有些对象是可变的,有些是不可变的。这取决于对象本身。如果该对象提供了改变其内容的方法,那么它就是可变的。否则它就是不可变的。大多数由Python定义的类型是不可变的。例如,一个int 是不可变的。没有任何方法可以改变它的值。如果你用

age = 8
age = age + 1

#or

age += 1

并用id(age) 检查,你会发现age 指向了不同的内存位置。原来的值没有发生变化,我们换成了另一个值。