Python面向對象——基本繼承

来源:https://www.cnblogs.com/brightyuxl/archive/2018/04/10/8784562.html
-Advertisement-
Play Games

本文通過圖解的方法解釋了Python面向對象中基本繼承的原理。 ...


1.基本繼承圖解

1.1實例化一個Contact類的對象c

1.2實例化一個Supplier類的對象s

1.3訪問對象的屬性

1.4訪問對象s的方法

1.5類變數詳解

如果從新定義c.all_contacts = "xxxxxx";那麼,對象c擁有一個新的屬性all_contacts,其值為"xxxxxx"。這個c對象屬性的修改,不影響Contact.all_contacts, Supplier.all_contacts, s.all_contacts的值。

註:上述通過對象訪問類變數,其實都是訪問同一個值,它們都屬於Contact.all_contacts;只要Contact.all_contacts不修改,實例化的對象就不會修改。

 2上述代碼驗證

In [1]: class mySubclass(object):  #繼承的基本語法
   ...:     pass
   ...:

In [2]: class Contact:                  #父類定義
   ...:     all_contacts = []
   ...:     def __init__(self, name, email):
   ...:         self.name = name
   ...:         self.email = email
   ...:         Contact.all_contacts.append(self)
   ...:

In [3]: class Supplier(Contact):    #子類定義,繼承了Contact類
   ...:     def order(self, order):
   ...:         print("If this were a real system we would send "
   ...:         "{} order to {} ".format(order, self.name))
   ...:

In [4]: c = Contact("Some Body", "[email protected]")

In [5]: s = Supplier("Sup Plier", "[email protected]")

In [6]: c.name
Out[6]: 'Some Body'

In [7]: c.email
Out[7]: '[email protected]'

In [8]: s.name
Out[8]: 'Sup Plier'

In [9]: s.email
Out[9]: '[email protected]'

In [10]: c.all_contacts
Out[10]: [<__main__.Contact at 0x1e3f42bbb70>, <__main__.Supplier at 0x1e3f42c1278>]

In [11]: c.order("I need plier")
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-11-728826faab97> in <module>()
----> 1 c.order("I need plier")

AttributeError: 'Contact' object has no attribute 'order'

In [12]: s.order("I need plier")
If this were a real system we would send I need plier order to Sup Plier

In [13]: s.all_contacts
Out[13]: [<__main__.Contact at 0x1e3f42bbb70>, <__main__.Supplier at 0x1e3f42c1278>]

 參考:本文參考學習《Python3 Object Oriented Programming》,Dusty Phillips 著

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 安裝qrcode庫和PIL庫 ========== 在命令行中分別輸入pip install qrcode 和pip install pillow 導入庫格式如下: 下麵以生成一個帶圖標的二維碼為例 運行效果如下 上面這個例子是我之前看別人的,但是卻運行不了,之後自己修改過後的程式,如有侵犯立刻刪除 ...
  • 學習目的: 解決AJAX請求的爬蟲,網頁解析庫的學習,MongoDB的簡單應用 正式步驟 Step1:流程分析 Step2:實例分析 1. 打開今日頭條搜索頁,搜索“中超”,查看頁面的請求方法為:GET 2. 創建一個Python文件:spider_ajax.py 3.網站url信息獲取 4. 列印 ...
  • Java基礎 首先,來看一下Java基礎知識圖解,以下便是在java學習中我們需要學習設計到的一些知識(當然不是很完全)。 這些都是接下來在以後的學習中我們會學到的一些知識。 1 關鍵字 首次先來學習一下Java中的關鍵字,關鍵字的定義是:被java語言賦予了特殊含義,用作專門用途的一些單詞,其特點 ...
  • 最近在學Python,嘗試著用for和while迴圈做一個簡單的學生管理系統,現在遇到的問題是沒法限定輸入的數據類型和從for迴圈中跳出 第一個限定是:如果沒有沒有輸入整數,程式直接報錯,在其中使用了轉換,代碼18行 第二個跳出for迴圈:目的是要對錄入的信息進行一個初步的判斷,確保關鍵信息不重覆 ...
  • go語言聖經-複合數據類型 1.以不同的方式組合基本類型可以構造出來的複合數據類型 2.四種類型——數組、slice、map和結構體 3.數組是由同構的元素組成——每個數組元素都是完全相同的類型——結構體則是由異構的元素組成的 4.slice和map則是動態的數據結構,它們將根據需要動態增長 go語 ...
  • 上一篇我們成功以把Opotaplanner規劃引擎下載回來,並把它的示例運行起來,簡單解析了一下它的Cloud balance示例。這一篇我們這些示例的源代碼導入到Eclipse中,看看它在後臺是怎麼運行的。 一、推薦使用Maven 在上一篇,我們已經從Optaplanner的官網下載了它的壓縮包, ...
  • https://promotion.aliyun.com/ntms/act/group/team.html?group=lWCcBOsP3g ...
  • 學習目的: 通過一個一個簡單的爬蟲應用,初窺門徑。 正式步驟 Step1:流程框架 Step2:實際步驟+分析 1. 在pycharm中新建一個Python項目,新建一個文件spider.py 2.運行代碼: 運行結果不添加了,此外,最後註釋掉的代碼,功能是非多線程的 學習總結: 爬蟲涉及的Pyth ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...