python學習進階之面向對象(二)

文章目錄

  • 1.面向對象編程介紹
  • 2.面向對象基本語法
  • 3.面向對象的三大特征
  • 4.面向對象其他語法

1.面向對象編程介紹

1.1 基本概念

  • 概念:面向對象編程(Object-Oriented Programming, OOP)是一種流行的編程范式,它以"對象"為核心組織代碼和數據
  • 在面向對象的世界里: 萬事萬物皆對象

1.2 面相過程和面向對象

  • 面向過程:
    • 根據需求,將某些獨立功能封裝成一個又 一個函數
    • 最后完成的代碼,就是順序地調用不同的 函數
  • 面相對象:
    • 相比較函數,面向對象是更大的封裝,根 據職責在一個對象中封裝多個方法
    • 根據職責確定不同的對象,在對象內部封 裝不同的方法

1.3 類和對象的概念

  • :是對具有相同特征或者行為的事物的一個統稱, 是抽象的,不能直接使用
    • 主要內容:
      • 特征(靜態) -> 屬性
      • 行為(動態) -> 方法
    • 類的設計
      • 注意:
        • 大駝峰命名法: 所有單詞第一個字 母大寫, 單詞之間沒有下劃線
        • 類名的提取:使用名詞提煉法分析整個業務流程, 得出的名詞, 通常就是類名
        • 對于需求中沒有提到的屬性方法, 在設計類的時候不要添加進來!
      • 想要設計一個類, 通常需要滿足以下三個要素
        • 類名: 同類事物的名字, 命名要滿足大駝峰命名法
        • 屬性: 同類事物具備的特征
        • 方法: 同類事物具備的行為
  • 對象: 是由類創建出來的一個具體存在的事物, 可以 直接使用
    • 說明:由哪一個類創建出來的對象, 就擁有在哪一個 類中定義的屬性和方法

2.面向對象基本語法

2.1 類的定義

  • 定義類的步驟

    • 定義類
    • 通過類創建對象
  • self參數

    • 說明:由哪一個對象調用的方法, 方法內的self 就是哪一個對象的引用
    • 注意:
      • 在類封裝的方法中,通過self. 訪問對象的屬性和方法
      • 在類的外部,通過對象變量名. 訪問對象的屬性和方法
  • 實例化:

    • 在Python中,由類創建對象的操作又被稱之為實例化
    • 通過一個類可以創建多個對象
  • 初始化方法

    • 當使用類名() 創建對象時,會自動執行以下操作:

      • 1)為對象在內存中分配空間——創建對象
      • 2)為對象的屬性設置初始值——初始化方法(init)
    • 這個初始化方法就是__init__ 方法,init 是對象的內置方法

    • _init_ 方法是專門用來定義一個類具有哪些屬性的方法

    • 在初始化方法中增加對象屬性

      1. 把希望設置的屬性值,定義成__init__ 方法的參數
      2. 在方法內部使用self.屬性= 形參接收外部傳遞的參數
      3. 在創建對象時,使用類名(屬性1, 屬性2...) 調用
      
    • 總結:初始化方法就是指的__init__()方法,創建對象的時候會自動調 用,用來定義類具有哪些屬性

  • 語法格式

    # 定義類
    class Person:# 類屬性(所有實例共享)species = "Homo sapiens"# 初始化方法(構造函數)def __init__(self, name, age):# 實例屬性self.name = name  self.age = age# 實例方法def greet(self):return f"你好,我叫{self.name},今年{self.age}歲"# 創建對象   
    # 實例化對象(在Python中,由類創建對象的操作又被稱之為實例化)
    person1 = Person("張三", 25)
    person2 = Person("李四", 30)# 訪問屬性和方法
    print(person1.name)       # 張三
    print(person2.greet())    # 你好,我叫李四,今年30歲
    print(Person.species)     # Homo sapiens
    
  • 舉例1

    # 需求:小貓愛吃魚,小貓要喝水
    class Cat:"""這是一個貓類"""def eat(self):print("小貓愛吃魚")def drink(self):print("小貓在喝水")# 通過Cat類創建tom對象
    tom = Cat()
    tom.drink()
    tom.eat()print("-"*20)
    # 通過Cat類創建lazy_cat對象
    lazy_cat = Cat()
    lazy_cat.eat()
    lazy_cat.drink()# 可以通過直接打印兩個對象變量, 或者使用Python內置函數id(),查看兩個對象的信息
    print("-"*20)
    print(f"tom對象的內存地址{id(tom)}")
    print(f"lazy_cat對象的內存地址{id(lazy_cat)}")# 運行結果
    小貓在喝水
    小貓愛吃魚
    --------------------
    小貓愛吃魚
    小貓在喝水
    --------------------
    tom對象的內存地址2188968061528
    lazy_cat對象的內存地址2188968061808
    
  • 舉例2

    在這里插入圖片描述

    # 類名:狗
    # 屬性:名字、年齡、身高、體重...
    # 方法:吃、跑、拿耗子...
    class Dog(object):def __init__(self, name, age, height, weight):"""狗狗的屬性:param name: 姓名:param age: 年齡:param height: 身高:param weight: 體重"""self.name = nameself.age = ageself.height = heightself.weight = weightdef run(self):

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921912.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921912.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921912.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VS+QT的編程開發工作:關于QT VS tools的使用 qt的官方幫助

加粗樣式 最近的工作用到VS2022QT5.9.9/QT5.12.9,在查找相關資料的時候,發現Qt 官方的資料還是很不錯的,特記錄下來,要記得抽時間學習下。 Add Qt versions https://doc.qt.io/qtvstools/qtvstools-how-to-add-qt-versions.html B…

【系統分析師】第21章-論文:系統分析師論文寫作要點(核心總結)

更多內容請見: 備考系統分析師-專欄介紹和目錄 文章目錄 一、寫作注意事項:構建論文的合規性與專業性 1.1 加強學習 1.2 平時積累 1.3 提高打字速度 1.4 以不變應萬變 二、試題解答方法:結構化應對策略 2.1 試題類型分析 2.2 三段式答題框架 2.3 時間分配 三、論文寫作方法:…

tailwindcss 究竟比 unocss 快多少?

tailwindcss 究竟比 unocss 快多少? 前言 大家好,我是去年一篇測評 《unocss 究竟比 tailwindcss 快多少?》 的作者 icebreaker。 一晃到了 2025 年,tailwindcss4 也正式發布了,現在最新版本是 4.1.13。 新版本不僅…

算法練習——55.跳躍游戲

1.題目描述給你一個非負整數數組 nums ,你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最后一個下標,如果可以,返回 true ;否則,返回 false 。示例 1&#xff…

Django 項目6:表單與認證系統

目錄 1、form 表單 2、session 保存狀態 3、Admin 后臺 4、Auth 系統 1、form 表單 (1)創建 form.py 文件,并完善 from django import forms# 定義一個表單類 class Register(forms.Form):user forms.CharField(max_length30, label用…

tvm/triton/tensorrt比較

1.tvm的主線感覺更新太慢,文檔太落后,在自動駕駛領域不支持Blackwell平臺,跨平臺其實吹牛的更多。我覺得自動駕駛用不起來。2.性能最快的還是tensorrt/tensorrt_llm這條路,純cuda路線面臨大量cuda算子開發,比如vllm ll…

Transform 和BERT、GPT 模型

目錄 Transform的由來 Seq2seq 模型 Transform 的內部結構 語言模型 BERT 介紹 BERT 模型的組成 分詞器 位置編碼 Softmax 殘差結構 BERT 模型總結 Transform的由來 傳統的語?模型,?如RNN(循環神經?絡),就像?個“短…

2025高教社國賽數學建模A題參考論文35頁(含代碼和模型)

2025國賽數學建模競賽A題完整參考論文 目錄 摘要 1 問題背景與重述 2 問題分析 2.1 問題一分析 2.2 問題二分析 2.3 問題三分析 2.4 問題四分析 2.5 問題五分析 3 符號說明 4 模型假設 5 模型建立與求解 5.1 問題一 煙幕有效遮蔽時長…

【Linux】常用命令匯總

【Linux】常用命令【一】tar命令【1】可用參數【2】常用案例(1)創建歸檔(打包)(2)查看歸檔內容:??(3)解包歸檔 (提取):??【二】日志查看命令【1】基礎命令…

軟考系統架構設計師之軟件系統建模

一、軟件系統建模 系統建模流程包括如下: 二、人機交互設計 黃金三法則: 1、置于用戶控制之下以不強迫用戶進入不必要的或不希望的動作的方式來定義交互方式 提供靈活的交互 允許用戶交互可以被中斷和撤銷 當技能級別增加時可以使交互流水化并允許定制交…

Linux系統學習之注意事項及命令基本格式

哈嘍,你好啊,我是雷工!你要是翻過歷史文章的話,肯定特別疑惑:這神經病搞得這個號到底是啥定位,究竟是分享啥類型的,咋亂七八糟的啥都有。真是個雜貨鋪啥都有,咋又開始分享Linux系統了…

0基礎Java學習過程記錄——枚舉、注解

一、枚舉1.基本介紹(1)枚舉對應英文 enumeration,簡寫為 enum(2)枚舉是一組常量的集合(3)可以理解為:枚舉屬于一種特殊的類,里面只包含一組有限的特定的對象2.實現方式&a…

高效計算的源泉:深入淺出馮諾依曼模型與操作系統的管理藝術 —— 構建穩定、高效的應用基石 【底層邏輯/性能優化】

???~~~~~~歡迎光臨知星小度博客空間~~~~~~??? ???零星地變得優秀~也能拼湊出星河~??? ???我們一起努力成為更好的自己~??? ???如果這一篇博客對你有幫助~別忘了點贊分享哦~??? ???如果有什么問題可以評論區留言或者私信我哦~??? ??????個人…

性能測試-jmeter9-邏輯控制器、定時器壓力并發

課程:B站大學 記錄軟件測試-性能測試學習歷程、掌握前端性能測試、后端性能測試、服務端性能測試的你才是一個專業的軟件測試工程師 性能測試-jmeter邏輯控制器、定時器妙用IF控制器**IF 控制器的作用**循環控制器循環控制器的作用ForEach控制器ForEach 控制器的作用…

T:線段樹入門(無區間更新)

線段樹.線段樹介紹.線段樹框架.理解線段樹.圖式整個過程.線段樹代碼逐層解析.代碼匯總.leetcode練習.線段樹介紹 線段樹(SegmentTree)\;\;\;\;\;\;\;\;線段樹(SegmentTree)線段樹(SegmentTree) is 用于高效處理區間查詢和單點修改的數據結構,和樹狀數組很像&#xf…

【ISP】Charlite工具實操

實習一周了&#xff0c;參與了客觀拍攝和測試&#xff0c;復習一下nv工具 BLACK LEVEL&#xff08;黑電平&#xff09; eg&#xff1a; $ nv_ob 0 in_dir <input directory> out_name <ob file> nv_ob 0 in_dir D:\study\nvraw\ob1 out_name D:\study\nvraw\my_out…

普藍機器人 AutoTrack-IR-DR200 外設配置全指南

為什么外設配置對機器人研究如此重要&#xff1f;在當今機器人技術飛速發展的時代&#xff0c;高校學生研究團隊正成為創新的重要力量。無論是參加機器人競賽、開展畢業設計&#xff0c;還是進行學術研究&#xff0c;正確配置和使用外設設備都是成功的關鍵。尤其學生組裝一個服…

8、Python性能優化與代碼工程化

學習目標&#xff1a;掌握Python程序性能分析和優化的通用方法&#xff0c;建立工程化開發的規范意識&#xff0c;為后續AI項目開發奠定堅實的編程基礎在數據科學和AI開發中&#xff0c;代碼性能往往決定了項目的可行性。一個處理時間從幾小時縮短到幾分鐘的優化&#xff0c;可…

【算法--鏈表】117.填充每個節點的下一個右側節點指針Ⅱ--通俗講解

通俗算法講解推薦閱讀: 【算法–鏈表】83.刪除排序鏈表中的重復元素–通俗講解 【算法–鏈表】刪除排序鏈表中的重復元素 II–通俗講解 【算法–鏈表】86.分割鏈表–通俗講解 【算法】92.翻轉鏈表Ⅱ–通俗講解 【算法–鏈表】109.有序鏈表轉換二叉搜索樹–通俗講解 【算法–鏈…

分詞器(Tokenizer)總結(89)

分詞器(Tokenizer)總結 分詞器(Tokenizer) 分詞器的詞表(vocabulary)長度通常短于模型嵌入層(embedding layer)的長度。 結束標記(EOS token)應僅用于標記文本結尾,不可用于其他用途。 填充標記(PAD token)通常未預先定義,但你仍可能需要用到它: 對于生成式模型…