python 初識面向對象

来源:https://www.cnblogs.com/beargod/archive/2018/12/27/10187551.html
-Advertisement-
Play Games

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


1. 初識面向對象
面向過程:
一切以事務的發展流程為中心.
面向對象:
一切以對象為中心. 一切皆為對象. 具體的某一個事務就是對象

打比方:
大象進冰箱
步驟: 第一步, 開門, 第二步, 裝大象, 第三步, 關門

面向對象:大象, 你進冰箱.
此時主語是大象. 我操縱的是大象. 此時的大象就是對象

 1 class Car:  # 類名首字母大寫,嚴格蹲守駝峰命名規則
 2     pass
 3 
 4 
 5 # 造車
 6 c = Car()  # 類名()  # 創建對象
 7 
 8 #  出廠之後進行改裝
 9 c.color = '紅顏色'  # 對象.屬性    點:的  當屬性不存在的時候, 添加一個屬性
10 c.pai = '京A8888'  # 對象.屬性
11 c.pailiang = '555L'  # 排量
12 
13 print(c.color)  # 此車是紅顏色
14 print(c.pai)
15 print(c.pailiang)
16 
17 c.color = '綠顏色'  # 當屬性存在的時候是修改屬性信息
18 # 對象.屬性 =xxx 設置屬性信息
19 print(c.color)

2. 類. 對象
類: 就是圖紙. 創建對象的第一步. 先畫圖紙. 先寫類.
對象: 對象就是車. 通過圖紙造出來的具體的東西. 通過類來創建對象

類與對象的關係:
類是對xxx事物的歸類.
寫:
__init__(self, 參數) 參數一般作為屬性設置給對象. 對象就是self, 對屬性的封裝.

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

對象是xx類型的一個具體
創建對象: 類名()

創建類:
class 類名:

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

def fangfa(self):
方法體(函數體, return)

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

變數.屬性 # 訪問對象的屬性信息
變數.方法() # 訪問類中的方法

 1 1.
 2 class Car:  # 類名首字母大寫,嚴格蹲守駝峰命名規則
 3     # __init__方法是一個特殊的方法. 初始化方法. (構造方法)
 4     # 在創建對象的時候會自動的調用__init__()
 5     # self就是你創建出來的那個對象
 6     def __init__(self):  # init初識方法. 在創建對象的時候. 預設執行這個函數
 7         print('我是init')
 8         print('self=', self)
 9 
10 
11 c = Car()  # 創建Car類型對象. 此時self參數不需要我們管
12 print('c=', c)
13 
14 2.
15 class Car:  # 類名首字母大寫,嚴格蹲守駝峰命名規則
16     def __init__(self, color, pai, pailiang):  # init初識方法. 在創建對象的時候. 預設執行這個函數
17         # self.color = '紅色' # 在出廠的時候都是紅色 靜態的
18         self.color = color  # 動態獲取 第一個color是設置 第二個color是獲取的參數
19         self.pai = pai
20         self.pailiang = pailiang
21 
22     # 跑: 動作, 功能 -> 函數
23     # 在類中寫的函數-> 方法
24     # self 當前類的對象
25     def pao(self):  # self是自動傳遞的. 不用管它
26         print('%s我的車能跑' % self.color)  #self.color
27     def jump(self):
28         print('you jump, I jump')
29 #
30 #
31 #
32 #
33 c = Car('紅色', '京A8888', '555L')  # 創建Car類型對象. 此時self參數不需要我們管
34 c2 = Car('藍色', '京B6666', '1.6T')
35 print(c.color)
36 print(c2.color)
37 #
38 #
39 c.pao()
40 c2.pao()
41 c.jump()


3. 面向對象和麵向過程的對比
如果寫一些比較小的程式用面向過程.
程式很複雜. 很龐大建議用面向對象.

4. 面向對象的三大特征
封裝:
1. 對屬性的封裝(__init__())
self.xxx = xxx
2. 對方法和功能的封裝

繼承
子類自動擁有父類中除了私有內容外的其他所有內容
class Bar(Foo): Bar對Foo進行了擴展
pass

當出現x是一種y的時候. 推薦使用繼承關係
python支持多繼承. 查找順序: 先找離他近的.

1 class Foo:
2     def getMoney(self):
3         print('拿錢')
4 
5 class Bar(Foo):
6     pass
7 
8 b = Bar()
9 b.getMoney()  # 此時調用的是父類中的方法

 

多態(python原生直接就是多態)
python更多的支持的是鴨子模型, 只要會嘎嘎叫就是好鴨子

 1 多態性: 用一個對象. 多種形態
 2 python 支持的是鴨子類型. 會嘎嘎叫的東西就是鴨子
 3 為了程式能夠正常執行. 本來需要傳遞進來一隻鴨子. 但是我只需要傳遞一個會嘎嘎叫的東西就可以了
 4 def func(yazi):
 5     yazi.gagajiao()
 6 
 7 class Animal:
 8     def chi(self):
 9         print("會吃")
10 
11 class GoldenMonkey(Animal):
12     def chi(self):
13         print("用手拿著吃, 五花八門")
14 
15 class Tiger(Animal):
16     def chi(self):
17         print("老虎吃肉")
18 
19 class Elephant(Animal):
20     def chi(self):
21         print("大象吃香蕉")
22 
23 class QiE(Animal):
24     def chi(self):
25         print("企鵝吃人民幣")
26 
27 # 以下代碼是飼養員
28 # 優點: 超強的可擴展行. 面向對象的核心就是多態
29 def wei_animal(ani):  # 傳進來的東西要會吃的就行
30     ani.chi()
31 
32 # 動物園
33 t = Tiger()
34 m = GoldenMonkey()
35 e = Elephant()
36 
37 wei_animal(t)
38 wei_animal(m)
39 wei_animal(e)
40 
41 a = 188
42 def cul(n):  # python中萬事萬物都是對象, object(對象)
43     print(n)
44 
45 cul(a)
46 cul('哈哈')

 


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

-Advertisement-
Play Games
更多相關文章
  • 集合類的由來: JAVA是面向對象的,對象用來封裝特有數據,對象多了就需要儲存起來,當對象的個數不確定的時候,那麼就用集合容器進行存儲。 集合的特點: 1.集合的長度是可變的 2.用於存儲對象的容器 3.不可以存儲基本數據類型 體系: 集合容器因為內部的數據結構不同,有多種具體容器,不斷的向上提取, ...
  • 第一步:自報家門(全局屬性) 第一個是你的名字 第二個是你的郵箱 第二步:創建版本庫 首先確定一個你想要的位置,創建一個文件夾 通過命令移動到該文件夾下麵,使用 git init 命令 第三步, 創建一個文件 readme.txt 使用vi編輯器輸入一點內容 使用git add readme.txt ...
  • 天氣數據可以從網上下載,這個例子的數據是從http://data.cma.cn/下載而來的。 下載的數據裝在txt文件中。 裡面包含了12年開始北京的月最低和最高溫度。 讀取數據: 將txt中的數據逐行存到列表lines里 lines的每一個元素對應於txt中的一行。然後將每個元素中的不同信息提取出 ...
  • Yaml配置文件 概述 在支持 配置文件的同時,也支持 配置文件. 配置文件中的屬性,可以通過: 通過 註解將屬性值註入 中; 通過 註解將屬性值註入 中. 此處不推薦使用 方式註入屬性,原因有二: 對於較為複雜的數據結構難以設置,諸如 ,`Object`; 不支持對屬性值進行校驗,諸如 ,`@Si ...
  • 今天優化了一下三級菜單的代碼 兩個版本: 一:分幾次迴圈完成: ...
  • Models.py#coding:utf8fromflaskimportFlaskfromflask_sqlalchemyimportSQLAlchemyapp=Flask(__name__)#實例化app.config["SQLALCHEMY_DATABASE_URI"]="mysql://roo... ...
  • 源碼文件的三種類型: 命令源文件:可以直接運行的程式,可以不編譯而使用命令“go run”啟動、執行。 庫源碼文件 測試源碼文件 面試題:命令源碼文件的用途是什麼,怎樣編寫它? 典型回答: 命令源碼文件是程式的運行入口,是每個可獨立運行的程式必須擁有的。 我們可以通過構建或安裝生成與其對應的可執行文 ...
  • 二叉樹首先要解決構建問題,才能考慮後續的遍歷,這裡貼出通過先序構建二叉樹,同時包含四種二叉樹的遍歷方法(先序,中序,後序,逐層) 第一、定義BinaryTreeNode 類 1 #include <iostream> 2 #include <string> 3 #include <queue> 4 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...