跳到主要内容

Python 的对象和类

在编程领域中,通常把现实世界中的实体称为对象,例如:

  • 美国总统特朗普
  • 中国明星成龙
  • 上海中心大厦
  • 北京中信大厦

这里需要注意的是,对象指的是一个具体的实体,不用于指代一个抽象的群体。例如:特朗普是一个特定的具体的人,可以说 “特朗普是一个对象”。他是一个美国人,因为美国人是一个抽象的概念,指代的是一类人,因此不能说 “美国人是一个对象”。

类似的,上海中心大厦、北京中信大厦这些具体的大厦可以被称为对象,但是不使用 “大厦是一个对象” 这样的说法。

1. 对象的属性和行为

现实世界中的实体有属性和行为,下面的表格列举了特朗普和成龙的属性和行为:

对象属性行为
特朗普姓名、年龄自我介绍
成龙姓名、年龄自我介绍

行为又被称为方法,它是对属性的操作,包括读取操作和修改操作。例如,在特朗普的自我介绍行为中,会读取他的属性:姓名和年龄。

2. Python 中的对象

2.1 对象的例子

在 Python 中,对象的例子如下:

  • 字符串 ‘Hello’
  • 列表 [‘www’, ‘imooc’, ‘com’]
  • 元组 (‘www’, ‘imooc’, ‘com’)
  • 字典 {‘name’: ‘tom’, ‘age’: 123}

2.2 对象的属性

对象的属性示例如下:

>>> string = 'Hello'
>>> print(string.__doc__)
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object.
>>> list = ['a', 'b', 'c']
>>> print(list.__doc__)
list() -> new empty list
list(iterable) -> new list initialized from iterable's items

  • 在第 1 行,创建字符串对象 ‘Hello’
  • 在第 2 行,打印字符串 ‘Hello’ 的属性 __doc__,该属性描述了字符串对象的用法
  • 在第 6 行,创建列表对象 list
  • 在第 7 行,打印列表 list 的属性 __doc__,该属性描述了列表对象的用法

2.3 对象的行为

对象的行为示例如下:

>>> string = 'Hello'
>>> string.upper()
'HELLO'
>>> list = ['a', 'b', 'c']
>>> list.append('d')
>>> list
['a', 'b', 'c', 'd']

  • 在第 1 行,创建字符串对象 ‘Hello’
  • 在第 2 行,调用对象的 upper 方法,获取字符串的大写
  • 在第 4 行,创建列表对象 list
  • 在第 5 行,调用对象的 append 方法,向列表追加一个元素

3. 什么是类

3.1 类的定义

在现实世界中,具体的实体被称为对象,观察这些对象的属性和行为,发现可以使用相同的特征去描述一类对象。例如:

对象属性和行为
美国总统特朗普姓名、年龄、工作
中国明星成龙姓名、年龄、工作
上海中心大厦高度、业主、维护
北京中信大厦高度、业主、维护

可以使用 “姓名、年龄、工作” 等特征去描述特朗普和成龙这一类对象,使用 “高度、业主、维护” 等特征去描述上海中心大厦、北京中信大厦这一类对象。

在编程领域,类是对一组具有相同属性和行为的对象的抽象。例如, “人” 是一个抽象的概念,它是一个类或者类别,描述了具有 “姓名、年龄、工作” 等特征的一组对象;“楼” 是一个抽象的概念,它是一个类或者类别,描述了具有 “高度、业主、维护” 等特征的一组对象。

3.2 类和对象的关系和区别

下面的列表总结了类和对象的关系和区别:

  • 对象是一个具体的实体,例如:特朗普是一个对象
  • 类是对多个具有相同属性的实体的抽象,例如:特朗普和成龙等实体具有 “姓名、年龄、工作” 等属性,通过归纳形成一个抽象概念——人,人是一个类
  • 对象与类的关系:对象属于某个类、对象不属于某个类,例如:特朗普是一个人,或者说特朗普属于人类

4. Python 中的类

本节讲解如何在 Python 中创建类,并利用类来创建对象。首先创建一个具有 name 和 age 两个属性的类——Person,然后利用 Person 这个类创建两个对象—— tom 和 jerry,代码如下: