既然 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

Python 類別 class 的繼承 Inheritance的更多相关文章

  1. Python开发 基礎知識 3.類別&方法 (bool & str) (未完待續)

    類別 可使用type()查看 內建 [ 布爾:bool (Boolen) 字串:str (String) 數字:int (Integer) 小數:float 列表:list 元祖:tuple 字典:d ...

  2. [Java] 基本資料包裝類別 Wrapper Classes

    基本型別包裝 (Wrapper Classes) 將基本型別生成物件,要將基本型別先包裝成物件,才能執行生成, Boxing: Integer a = new Integer(1) Unboxing: ...

  3. js原型鏈與js繼承解析

    最近在網上看了諸多js原型鏈的解析,說得雲裡霧裡,不明所以.徹底了解後,決定出個博客記錄一下,一是方便後來人學習,二是方便日後複習. 首先,我們來看一下構造函數.原型.實例之間的關係圖: 所以,我們通 ...

  4. [Java] 方法 -- 繼承關係

    public class test { void show() { System.out.println("父類別"); } } public class test2 extend ...

  5. Python 類和對象 Class vs Object

    類別定義 class 類別名: 例如: >>> class Point:...     x = 0.0...     y = 0.0 1. 宣告 >>> p1 = ...

  6. JAVA 面向对象-2-继承(Inheritance)

    i.继承(Inheritance) 1.继承的概念 继承:在面向对象编程的过程中,通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类. 继承是面向对象编程最重要的特征之一. 继承的优点:1 ...

  7. css繼承

    概念:就是上級設置了css屬性,下級默認有同樣的樣式,如果下級需要不一樣的樣式,那麼就需要單獨對下級設置. 範圍: font-family:字體 font-weight:粗細 font-size:尺寸 ...

  8. QEvent postEvent/sendEvent

    可以自訂事件類型,最簡單的方式,是透過QEvent::Type指定事件類型的常數值,在建構QCustomEvent時作為建構引數並透過postEvent()傳送事件,例如: const QEvent: ...

  9. Python SQLAlchemy --1

    本文為 Python SQLAlchemy ORM 一系列教學文: SQLAlchemy 大概是目前 Python 最完整的資料庫操作的套件了,不過最令人垢病的是它的文件真的很難閱讀,如果不搭配個實例 ...

随机推荐

  1. NOI 2011 兔农 题解

    事先声明,本博客代码主要模仿accepoc,且仅针对一般如本博主一样的蒟蒻. 这道题不得不说数据良心,给了75分的水分,但剩下25分真心很难得到,因此我们就来讲一讲这剩下的25分. 首先,有数据可知他 ...

  2. sql server 2008 NULL值

    SQL支持用NULL符号来表示缺少的值,它使用的是三值谓词逻辑,计算结果可是以TURE.FALSE或UNKNOWN. SQL中不同语言元素处理NULL和UNKNOWN的方式也有所不同,如果逻辑表达式只 ...

  3. 【题解】P1396 营救-C++

    原题传送门 这道题目基本就是一个克鲁斯卡尔最小生成树的模板题,唯一不同的是,这道题目的最终目标不是所有点相连,而是只要s和t相连就可以了.还有就是这道题目求的是最小生成树中的最大边权值.但是,克鲁斯卡 ...

  4. 【深搜(DFS)-例题-踏青】-C++

    描述 小白和他的朋友周末相约去召唤师峡谷踏青.他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地.草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都 ...

  5. 从似然函数到EM算法(附代码实现)

    1. 什么是EM算法 最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型 ...

  6. 如何在一个项目中兼容Wepy和Taro?

    背景交待 NJ 项目启动初期,团队技术栈主要是基于 Vue,技术选择上就选择了类 Vue 的 wepy.迭代几个版本后 mpvue 出来了,简单调研了下,准备基于 mpvue-simple 开发部分页 ...

  7. 个人永久性免费-Excel催化剂功能第35波-Excel版最全单位换算,从此不用到处百度找答案

    全球化的今天,相信我们经常可以有机会接触到外国的产品,同时我们也有许多产品出口到外国,国与国之间的度量单位不一,经常需要做一些转换运算,一般网页提供这样的转换,但没有什么比在Excel上计算来得更为方 ...

  8. Spring_简单入门(学习笔记1)

    Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架. 具体介绍参考 一:IoC(Inversion of Control)控制反转,将创建对象实例反转给spri ...

  9. C#写进程守护程序

    最近写了好多次进程守护程序,今天在这里总结一下. 用到的知识点: 1.在程序中启动进程, 2.写Windows服务, 3.以及在Windows服务中启动带界面的程序 关于第三点的问题,我在我的上一篇博 ...

  10. Codeforces Round #565 (Div. 3)

    传送门 A. Divide it! •题意 给定一个数n, 每次可以进行下列一种操作 1.如果n可以被2整除,用n/2代替n 2.如果n可以被3整除,用2n/3代替n 3.如果n可以被5整除,用4n/ ...