Python中的对象(一)
你现在还不了解面向对象的程序设计概念,那么先请阅读下面的文章。
言归正传,今天我们要学习的是Python的中对象(Objects)。Python的官方文档是这样描述Python中的对象的。
Objects are Python’s abstraction for data. All data in a Python program is represented by objects
or by relations between objects.
Python把所有的一切都认为是对象(Objects), 这就是那句著名的话 "Everything is an object in Python"。实际上,
对象(Objects)是Python对于数据的一种抽象。在Python程序中,所有的数据都是通过对象或者对象之间的关系
来表示的。 Python中的对象有由三个部分组成: 标示(identity),类型(type)和值(value)。
Objects are Python’s abstraction for data. All data in a Python program is represented by objects
or by relations between objects.
Python把所有的一切都认为是对象(Objects), 这就是那句著名的话 "Everything is an object in Python"。实际上,
对象(Objects)是Python对于数据的一种抽象。在Python程序中,所有的数据都是通过对象或者对象之间的关系
来表示的。 Python中的对象有由三个部分组成: 标示(identity),类型(type)和值(value)。
每一个对象都是唯一的。我们可以用对象的标示(identity)来比较两个对象,即使用 is 语句。我们可以把对象的标
示(identity)看做是对象在内存中的地址。当一个对象一旦被创建,它的标示(identity)将不再改变直到这个对象
消失。当对象消失后,它的标示(identity)将会被释放,并可能被未来的一个对象来使用。所以,对象的标示是唯一
的,不变的,并存在于对象的整个生命周期。为了更形象的说明什么是对象的标示(identity),我们可以用Python中
内建函数id()来返回一个对象的标示(identity)。
# For CPython, id(x) isthe memory address where x is stored.
- >>> print id.__doc__
- id(object) -> integer
- Return the identity of an object. This is guaranteed to be unique among
- simultaneously existing objects. (Hint: it's the object's memory address.)
- >>>
- >>> id('a')
- 4294254320L
- >>> id(1)
- 2147602984L
- >>> id(True)
- 1736287728
对象的类型(type)则决定了对象支持什么样的操作和运算,可以被赋予什么样的值。 内建函数type()返回的
是当前所给对象的类型。同对象的标示(identity)一样,类型(type)也是不可变的 。
- >>> print type.__doc__
- type(object) -> the object's type
- type(name, bases, dict) -> a new type
- >>>
- >>> type('a')
- <type 'str'> # 对象 'a' 的类型是‘str’
- >>> type(1)
- <type 'int'> # 对象 1 的类型是‘int'
- >>> type(None)
- <type 'NoneType'> # 对象None是Python里一个特殊的对象,它有个专门的类型 ‘NoneType'
- >>> type(True)
- <type 'bool'> # 对象 True 的类型是 ’bool‘
- >>>
- >>> type(int) # int类型的类型是类型。
- <type 'type'>
- >>> type(bool) # bool类型的类型是类型。
- <type 'type'>
- >>> type(type) # type类型的类型还是类型。
- <type 'type'>
- >>>
是不可变的。我们把那些值可以变化的对象叫做可变对象(mutable objects),把那些值不可变的对象叫做不
变对象(immutable objects)。一个对象的易变性(mutability)是由这个对象的类型(type)来决定的。
比如,数字(numbers),字符串(strings),元组(tuples)是不可变的,而字典(dictionaries),列表(lists )
是可变的。
对象从来不会显示地消失,如果某个对象不再被使用后,它们会在垃圾回收后变的不可以用。
至此,我们已经对Python对象有了基本的了解。下次,我们将深入讲解Python对象的一些特性。敬请期待!
By Harrison Feng