01 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,程式碼如下:
案例演示 預覽 複製 複製成功!class Person:
def introduce(self):
print('My name is %s, I am %d years old' % (self.name, self.age))
tom = Person()
tom.name = 'tom'
tom.age = 10
jerry = Person()
jerry.name = 'jerry'
jerry.age = 20
tom.introduce()
jerry.introduce()
執行案例 點選 "執行案例" 可檢視線上執行效果 - 在第 1 行,使用 class 關鍵字建立類 Person,類 Person 是對具有 name 和 age 屬性的物件的抽象
- 在第 2 行,定義了 Person 的方法 introduce,introduce 方法描述了類 Person 的行為
- 在第 3 行,類 Person 的 introduce 方法輸出 Person 的屬性 name 和 age
- 引數 self 指向當前的物件
- 注意,本節講解物件和類的區別,在詞條 “Python 類屬性和例項屬性” 詳細介紹 self 引數
- 在第 5 行,根據類 Person 建立一個新的物件 tom
- 在第 6 行,設定物件 tom 的 name 屬性為 ‘tom’
- 在第 7 行,設定物件 tom 的 age 屬性為 10
- 在第 9 行,根據類 Person 建立一個新的物件 jerry
- 在第 10 行,設定物件 jerry 的 name 屬性為 ‘jerry’
- 在第 11 行,設定物件 jerry 的 age 屬性為 20
- 在第 12 行,呼叫物件 tom 的 introduce 方法
- 在第 13 行,呼叫物件 jerry 的 introduce 方法
程式執行,輸出結果如下:
My name is tom, I am 10 years old
My name is jerry, I am 20 years old
總結,在上面的例子中,類和物件分別是:
- Person 是一個類
- tom 是一個物件
- jerry 是一個物件
5. 小結
物件和類的概念比較抽象,同學們可以把生活中的一些場景做一下代入。物件和類的是進行面向物件開發的基礎,所以一定要好好掌握物件和類的概念,下個小節我們來學習下類屬性和例項屬性。