python面向對象(一)

来源:https://www.cnblogs.com/fu-1111/archive/2018/12/17/10134079.html
-Advertisement-
Play Games

面向對象 1.初始面向對象 面向過程: 一切以事務的發展流程為中心. 面向對象: 一切以對象為中心. 一切皆為對象. 具體的某一個事務就是對象 打比方: 面向過程 大象進冰箱 步驟: 第一步, 開門, 第二步, 裝大象, 第三步, 關門 面向對象: 大象, 你進冰箱. 此時主語是大象. 我操縱的是大 ...


面向對象

1.初始面向對象

    面向過程:

        一切以事務的發展流程為中心.

    面向對象:

        一切以對象為中心. 一切皆為對象. 具體的某一個事務就是對象

    打比方:

  面向過程

        大象進冰箱

    步驟: 第一步, 開門, 第二步, 裝大象, 第三步, 關門

  面向對象:

  大象, 你進冰箱.

    此時主語是大象. 我操縱的是大象. 此時的大象就是對象

2. 類和對象

    類: 就是圖紙. 創建對象的第一步. 先畫圖紙. 先寫類.

    對象: 對象就是車. 通過圖紙造出來的具體的東西. 通過類來創建對象

    類與對象的關係:

        類是對xxx事物的歸類.

                def __init__(self, 參數)  參數一般作為屬性設置給對象. 對象就是self, 對屬性的封裝.

       pass

                def 方法(self, 參數): 方法. 第一個參數一般是固定的self. 當前類的對象.

                    pass

        對象是xx類型的一個具體

            創建對象: 類名()

    創建類:

    class 類名:

        def __init__(self): # 初始化方法. 又被成為構造方法

            self.屬性 = 值

        def fangfa(self):

            方法體(函數體,  return)

    創建對象:

        變數 = 類名() # 實例化 <-> 創建對象

        變數.屬性 # 訪問對象的屬性信息

        變數.方法() # 訪問類中的方法

class HeShang:
    def __init__(self, fh, name, miao):
        self.fahao = fh
        self.name = name
        self.miao = miao

    def nianjing(self):
        print("和尚會念經")

    def huayuan(self):
        print("和尚會化緣")

lzs = HeShang("花和尚", "魯智深", "梁山水廟")
lzs.nianjing()
lzs.huayuan()

 

3. 面向對象和麵向過程的對比

    如果寫一些比較小的程式用面向過程.

    程式很複雜. 很龐大建議用面向對象.

4. 面向對象的三大特征

    封裝:

        1. 對屬性的封裝(__init__())

            self.xxx = xxx

        2. 對方法和功能的封裝

class Student:
    def __init__(self, num, name, clazz):
        self.num = num
        self.name = name
        self.clazz = clazz


stu = Student("10010", "曹寶寶", "三年二班")
stu2 = Student("10086", "王迪", "三年一班")
def teach(s):
    print("教他%s語文課" % (s.name))
teach(stu)
teach(stu2)

    繼承

        子類自動擁有父類中除了私有內容外的其他所有內容

        class Bar(Foo):  Bar對Foo進行了擴展

            pass

        當出現x是一種y的時候. 推薦使用繼承關係

        python支持多繼承. 查找順序: 先找離他近的.

class Base1:
    def f1(self):
        print("base1.1")
    def f2(self):
        print("base1.f2")
    def f3(self):
        print("base2.f3")
        self.f1()
class Base2:
    def f1(self):
        print("base2.f1")
class Foo(Base1,Base2):
    def f0(self):
        print("foo.f0")
        self.f3()
obj = Foo()
obj.f0()

    多態  (python原生直接就是多態)

        python更多的支持的是鴨子模型,只要會叫就可以

class Animal:
    def chi(self):
        print("會吃")

class GoldenMonkey(Animal):
    def chi(self):
        print("用手拿著吃, 五花八門")

class Tiger(Animal):
    def chi(self):
        print("老虎吃肉")

class Elephant(Animal):
    def chi(self):
        print("大象吃香蕉")

def wei_animal(ani):
    ani.chi()


t = Tiger()
m = GoldenMonkey()
e = Elephant()

wei_animal(t)
wei_animal(m)
wei_animal(e)

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

-Advertisement-
Play Games
更多相關文章
  • 題目地址: https://www.luogu.org/problemnew/show/P1318 題意簡述 給出n個柱子的高度,柱子之間的空隙可以積水,求出最大的積水面積總和。 一道很有意思的模擬題,一開始還沒有什麼思路,後來發現 沒有柱子可以懸空 ,模擬的思路就大概出來了。 我的思路很簡單比較好 ...
  • admin組件使用 Django 提供了基於 web 的管理工具。 Django 自動管理工具是 django.contrib 的一部分。你可以在項目的 settings.py 中的 INSTALLED_APPS 看到它: django.contrib是一套龐大的功能集,它是Django基本代碼的組 ...
  • 前言 本篇是講述之前學習設計模式的一個總結篇,其目的是為了對這些設計模式的進行一個提煉總結,能夠通過查看看此篇就可以理解一些設計模式的核心思想。 設計模式簡介 什麼是設計模式 設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。 為什麼使用設計模式 使用設計模式是為了重用代 ...
  • 在 Python2 中如要想要獲得用戶從命令行的輸入,可以使用 input() 和 raw_input() 兩個函數,那麼這兩者有什麼區別呢? 我們先藉助 help 函數來看下兩者的文檔註釋: 可以看出,raw_input() 返回的始終是一個“原始”(raw)字元串,並且去掉了行末的換行符。 值得 ...
  • 前面多次提到了正則串、正則表達式,那麼正則表達式究竟是符合什麼定義的字元串呢?正則表達式是編程語言處理字元串格式的一種邏輯式子,它利用若幹保留字元定義了形形色色的匹配規則,從而通過一個式子來覆蓋滿足了上述規則的所有字元串。正則表達式的保留字元主要有:圓括弧、方括弧、花括弧、豎線、橫線、點號、加號、星 ...
  • 1.Spring依賴的jar包下載網址: https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring/4.0.0.RELEASE/spring- ...
  • 基礎 莫隊是啥? 暴力!! 莫隊的基礎是啥?會寫暴力!!! 啥叫莫隊 ...
  • 一.內置函數的補充 repr() 顯示出字元串的官方表示形式 chr() ord() 二.遞歸 二分法 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...