既然 Python 是面向物件 Object Oriented 語言,它就有類別 Class 與物件 Object 的概念。

甚麼是類別 class ? 簡單講: 類別好比蓋房子的施工藍圖 Blue Print,我們只看到圖,並沒有實體的"房子",所以類別是抽象的,不占據電腦的RAM的儲存空間。

那甚麼是物件 object 呢? 物件就是拿著施工的藍圖,來蓋個可以看到、實體的、摸的到的房子。

物件導向語言的特色是代碼可以重用 Reuse,而這透過類別的繼承 Inheritance 關係完成。即: 父類別的代碼與屬性,在子類別 Child Class 中可以全部接收為己有,不必重寫就可使用,甚至可依據自己特殊的需求,新增屬性與功能。我們以下面範例說明這繼承的關係:

Grandpa --> Father --> Son

這裡父親 Father 繼承祖父 Grandpa,而兒子 Son 繼承 Father。

類別的宣告用保留字 class,所以 class Grandpa 就宣告一個 Grandpa 這類別。

>>> class Grandpa : pass
...

接著,以 class 子類別 (父類別) 的語法,來宣告一個子類別,同時指定其繼承關係,例如:

>>> class Father(Grandpa) : pass
...
>>> class Son(Father) : pass
...

怎麼驗證這父子之間的類別關係呢? 我們可以用 issubclass(子類別,父類別) 這函數命令得知,例如:

>>> issubclass(Son,Father)
True
>>> issubclass(Father, Son)
False
>>> issubclass(Son,Grandpa)
True
>>>

有一個特別要注意的就是所有的類別都從一個根類別 Root Class 這 object 繼承過來,它是內建的,例如:

>>> issubclass(Grandpa,object)
True
>>> issubclass(Son,object)

類別的繼承機制大大提高了軟件開發的品質,人們由程序、資料該如何處理,轉向以問題解決,數據為中心的設計思考。

True

最新文章

  1. Yii 2.x 日志记录器-类图
  2. 1.<%@Page%>中的Codebehind、AutoEventWireup、Inherits有何作用?
  3. node搜索codeforces 3A - Shortest path of the king
  4. 关于uploadify 没有显示进度条!!!!
  5. Java第四周学习日记
  6. 解决ssh无密码登录不成功的问题
  7. POJ2828 Buy Tickets 【线段树】+【单点更新】+【逆序】
  8. hihocoder网络流一·Ford-Fulkerson算法
  9. raft如何实现Linearizable Read
  10. 团队作业8——第二次项目冲刺(Beta阶段)5.27
  11. 《第一行代码 android》 读书笔记:找出当前界面对应的Activity
  12. 保存图片到SD卡
  13. PHP从入门到精通(二)
  14. js_倒计时去执行函数或则跳转页面
  15. MI04 盘点单数据录入
  16. 内置变量WEBGL
  17. 后台对象转化成json数据返回给前端
  18. 20155216 Exp6 信息搜集与漏洞扫描
  19. ORA-00600: [kck_rls_check must use (11,0,0,0,0) or lower] 故障解决
  20. (1)变量、常量、程序交互、数据类型、bool、基本运算符

热门文章

  1. 【POJ - 2253】Frogger (Floyd算法)
  2. .netcore微服务-Mycat
  3. SpringBoot学习笔记3
  4. 下拉选择框,PopupWindow的使用
  5. WPF音乐电台
  6. C# 不同访问符的访问级别
  7. mySQL相关函数的使用
  8. luogu题解 P5020 【货币系统 】
  9. codeforces 340 A. The Wall
  10. Kafka服务不可用(宕机)问题踩坑记