亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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
  • 在第 13 行,調用對象 tom 的 introduce 方法
  • 在第 14 行,調用對象 jerry 的 introduce 方法

程序運行,輸出結果如下:

My name is tom, I am 10 years old
My name is jerry, I am 20 years old

總結,在上面的例子中,類和對象分別是:

  • Person 是一個類
  • tom 是一個對象
  • jerry 是一個對象

5. 小結

對象和類的概念比較抽象,同學們可以把生活中的一些場景做一下代入。對象和類的是進行面向對象開發的基礎,所以一定要好好掌握對象和類的概念,下個小節我們來學習下類屬性和實例屬性。