既然 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. C# 管道式编程

    受 F# 中的管道运算符和 C# 中的 LINQ 语法,管道式编程为 C# 提供了更加灵活性的功能性编程.通过使用 扩展函数 可以将多个功能连接起来构建成一个管道. 前言 在 C# 编程中,管道式编程 ...

  2. bs4——BeautifulSoup模块:解析网页

    解析由requests模块请求到的网页 import requests from bs4 import BeautifulSoup headers = {'User-Agent': 'Mozilla/ ...

  3. vijos P1911 珠心算测验

    #include<iostream> using namespace std; int main() { int n; int sum = 0; int num[200]; cin > ...

  4. 《C# 语言学习笔记》——委托

    委托是一种可以把引用存储为函数的类型. 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字.委托的声明制定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量 ...

  5. 【MySQL】(七)事务

    我的个人博客 http://www.haxianhe.com/ 数据库系统引入事务的主要目的:事务会把数据库从一种状态转换为另一种一致状态.在数据库提交工作时,可以确保要么所有修改都已经保存了,要么所 ...

  6. Java基础之分支结构循环结构

    流程控制语句if(分支结构) 流程控制:流程就是指代码运行过程.控制就是说什么场景可以执行,什么场景不能执行. 1.if语句第一种形式 格式:if(表达式){      执行的语句:     } 2. ...

  7. rabbitMQ_rpc(六)

    远程过程调用(RPC) 在前面我们已经学习了如何使用工作队列在多个消费者之间分配耗时的任务. 但是如果我们需要在远程计算机上运行功能并等待结果怎么办?那将会是一个不同的故事.此模式通常称为远程过程调用 ...

  8. 移动端H5多终端适配解决方案

    推荐三篇文章: 1.来自手淘团队的开源技术flexibal.js github地址:https://github.com/isHelenaChan/flexible 2.来自“大漠”(就职于淘宝,也是 ...

  9. Python—三目运算

    Python 可通过 if 语句来实现三目运算的功能,因此可以近似地把这种 if 语句当成三目运算符.作为三目运算符的 if 语句的语法格式如下: (True_statements) if (expr ...

  10. 计算机网络中IP地址和MAC地址

    计算机 网络中的网络地址有I P 地址和物理地址之分,对 于主机间的通信时,它们的作用也不一样 . l   I P 地址 为 了保证 I n t e r n e t 网上主机通信时能够相互识别 ,不引 ...