国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python面向對象編程中的類和對象學習教程

2020-02-23 00:27:13
字體:
來源:轉載
供稿:網友

Python中一切都是對象。類提供了創建新類型對象的機制。這篇教程中,我們不談類和面向對象的基本知識,而專注在更好地理解Python面向對象編程上。假設我們使用新風格的python類,它們繼承自object父類。
定義類

class 語句可以定義一系列的屬性、變量、方法,他們被該類的實例對象所共享。下面給出一個簡單類定義:
 

class Account(object):  num_accounts = 0   def __init__(self, name, balance):   self.name = name   self.balance = balance   Account.num_accounts += 1   def del_account(self):   Account.num_accounts -= 1   def deposit(self, amt):   self.balance = self.balance + amt   def withdraw(self, amt):   self.balance = self.balance - amt   def inquiry(self):   return self.balance

類定義引入了以下新對象:

    類對象
    實例對象
    方法對象

類對象

程序執行過程中遇到類定義時,就會創建新的命名空間,命名空間包含所有類變量和方法定義的名稱綁定。注意該命名空間并沒有創建類方法可以使用的新局部作用域,因此在方法中訪問變量需要全限定名稱。上一節的Account類演示了該特性;嘗試訪問num_of_accounts變量的方法需要使用全限定名稱Account.num_of_accounts,否則,如果沒有在__init__方法中使用全限定名稱,會引發如下錯誤:
 

class Account(object): num_accounts = 0  def __init__(self, name, balance):  self.name = name  self.balance = balance  num_accounts += 1  def del_account(self):  Account.num_accounts -= 1  def deposit(self, amt):  self.balance = self.balance + amt  def withdraw(self, amt):  self.balance = self.balance - amt  def inquiry(self):  return self.balance >>> acct = Account('obi', 10)Traceback (most recent call last): File "python", line 1, in <module> File "python", line 9, in __init__UnboundLocalError: local variable 'num_accounts' referenced before assignment

類定義執行的最后,會創建一個類對象。在進入類定義之前有效的那個作用域現在被恢復了,同時類對象被綁定到類定義頭的類名上。

先偏離下話題,你可能會問如果創建的類是對象,那么類對象的類是什么呢?。與一切都是對象的python哲學一致,類對象確實有個類,即python新風格類中的type類。
 

>>> type(Account)<class 'type'>

讓你更迷惑一點,Account類型的類型是type。type類是個元類,用于創建其他類,我們稍后教程中再介紹。

類對象支持屬性引用和實例化。屬性通過標準的點語法引用,即對象后跟句點,然后是屬性名:obj.name。有效的屬性名是類對象創建后類命名空間中出現的所有變量和方法名。例如:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 公安县| 泾川县| 谢通门县| 固阳县| 鄂托克旗| 台江县| 大同县| 虎林市| 莱州市| 德安县| 宜昌市| 施秉县| 磴口县| 桐庐县| 安溪县| 丰台区| 青州市| 梅州市| 沙河市| 沐川县| 庐江县| 萨迦县| 土默特左旗| 建阳市| 焦作市| 垦利县| 阿鲁科尔沁旗| 凤凰县| 嘉黎县| 阿克陶县| 天台县| 三河市| 甘谷县| 垫江县| 昆明市| 安达市| 孟津县| 子洲县| 化隆| 抚远县| 章丘市|