Python快速入門3:面向對象OOP(需要有編程基礎)

面向對象是什么:

????????面向對象編程(Object-Oriented Programming,OOP)是一種編程范式,它以對象為基礎,將數據和操作封裝在一起以創建可重用的代碼模塊。在面向對象編程中,對象是程序的基本單元,它們可以代表現實世界中的實體或概念,如人、車、動物等。面向對象編程的主要思想是將現實世界中的事物抽象為對象,并通過對象之間的交互來實現程序的功能。

面向對象編程的核心概念包括:

  1. 類與對象:類是對象的抽象,描述了具有相似屬性和行為的一組對象的共同特征。對象是類的實例,它具體化了類的定義,并擁有類所描述的屬性和行為。? ? ?

  2. 封裝:封裝是將數據和操作封裝在對象內部的機制,隱藏了對象的內部細節,只對外部提供有限的接口。這樣可以保護數據不受非法訪問和意外修改,提高了代碼的可維護性和可重用性。

  3. 繼承:繼承是一種機制,允許一個類(稱為子類或派生類)繼承另一個類(稱為父類或基類)的屬性和行為,并可以在此基礎上進行擴展或修改。通過繼承,可以實現代碼的重用和層次化的組織結構。

  4. 多態:多態是指同一個操作作用于不同的對象上時可以產生不同的行為。在面向對象編程中,多態通過方法的重寫(覆蓋)和方法的重載來實現。多態提高了代碼的靈活性和可擴展性,使得程序更加易于理解和維護。

Python面向對象:

定義類:

? ? ? ? 類有屬性和方法,對應實體的屬性和行為,類定義的語法格式:

class ClassName:<element_1>..<element_N><action_1>..<action_N>

例如:?

class Person:age = 18name = "Jack"def speak(self):return f'hello I am {self.name}'
Human = Person()
print(Human.speak())
#輸出:hello I am Jack

?構造方法

????????類有一個名為 __init__() 的特殊方法,也叫構造方法,類實例化對象時會自動調用這個方法,self指實例化的對象。

例如:

class Person:def __init__(self, name, age):self.age = ageself.name = namedef speak(self):return f"hello I am {self.name}, I'm {self.age} years old"
Human = Person('jack',18)
#輸出:hello I am jack, I'm 18 years old

繼承

????????子類可以繼承父類的屬性和方法,并且在子類中還可以改寫父類的屬性和方法,子類也可以定義新的方法。

例如:

class Person:def __init__(self, n, a):self.age = aself.name = ndef run(self):return f"{self.name} is running"def speak(self):return f"hello I am {self.name}, I'm {self.age} years old"
class Student(Person):def __init__(self, stuId,n,a):Person.__init__(self,n,a)self.stuId = stuIddef speak(self):return f"hello I am {self.name}, I'm {self.age} years old, my student id is {self.stuId}"
Human = Person('jack',18)
xiaohong = Student("20180001","小紅",18)print(xiaohong.speak())
print(xiaohong.run())
#輸出如下
#hello I am 小紅, I'm 18 years old, my student id is 小紅
#小紅 is running

私有屬性與方法

????????在類的屬性或方法前加上__表示此屬性或方法為私有屬性與方法,子類無法繼承和調用。

例如:

class Person:def __init__(self, n, a, money):self.age = aself.name = nself.__money = moneydef run(self):return f"{self.name} is running"def speak(self):return f"hello I am {self.name}, I'm {self.age} years old"def __spendMoney(self):return f"{self.name} 花了{self.__money}元"
class Student(Person):def __init__(self, stuId, n, a):Person.__init__(self, n, a, 100)self.stuId = stuIddef speak(self):return f"hello I am {self.name}, I'm {self.age} years old, my student id is {self.stuId}"xiaohong = Student("20180001","小紅",18)
xiaohong.__spendMoney()#此句報錯,無法調用

運算符重載:

?????????Python也可以進行運算符重載,直接調用類的專有方法就可以實現運算符重載。

例如:

class Purse:def __init__(self, a, b):self.money = aself.E_money = bdef __str__(self):return f"{self.money},{self.E_money}"def __add__(self, other):return Purse(self.money+other.money,self.E_money + other.E_money)
Purse1 = Purse(10,20)
Purse2 = Purse(30,40)
print(Purse1 + Purse2)
#輸出:40,60

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

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

相關文章

mysql實戰題目練習

1、創建和管理數據庫 創建一個名為school的數據庫。 列出所有的數據庫&#xff0c;并確認school數據庫已經創建。 如果school數據庫已經存在&#xff0c;刪除它并重新創建。 mysql> create database school; Query OK, 1 row affected (0.01 sec)mysql> mysql> sh…

Spring Boot:異常處理

Spring Boot 前言使用自定義錯誤頁面處理異常使用 ExceptionHandler 注解處理異常使用 ControllerAdvice 注解處理異常使用配置類處理異常使用自定義類處理異常 前言 在 Spring Boot 中&#xff0c;異常處理是一個重要的部分&#xff0c;可以允許開發者優雅地處理應用程序中可…

復利效應(應用于成長)

應用 每個人在智力、知識、經驗上&#xff0c;復利效應都一樣&#xff0c;只要能積累的東西&#xff0c;基本上最終都會產生復利效應。 再來看一下復利公式&#xff1a;FP*(1i)^n P本金&#xff1b;i利率&#xff1b;n持有期限。在使用時&#xff0c;一定要注意4個限定條件&a…

AI圖書推薦:ChatGPT等生成式AI在高等教育中的應用

自2022年11月以來&#xff0c;ChatGPT及其在高等教育各個層面的影響已成為所有教育對話的核心內容。Chan和Colloton所著的書籍是首批全面探討ChatGPT與生成式人工智能&#xff08;GenAI&#xff09;在高等教育中應用及影響的作品之一。 該書深入研究了針對專業環境定制的AI素養…

js中Array的2個容易被遺忘的函數some和array

Array.prototype.some() 和 Array.prototype.every() 是 JavaScript 中的兩個容易被遺忘的數組方法。它們都用于檢查數組中的元素是否滿足某個條件。 1. Array.prototype.some() some() 方法用于檢查數組中至少有一個元素滿足給定的條件。當找到滿足條件的元素時&#xff0c;…

基礎學習-Git(分布式版本控制系統)

學習視頻推薦 http://【黑馬程序員Git全套教程&#xff0c;完整的git項目管理工具教程&#xff0c;一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p5&share_sourcecopy_web&vd_source2b85bd9be9213709642d908906c3d863 1、Git環境配置 安裝Git Git下…

wireshark_概念

ARP (Address Resolution Protocol&#xff09;協議&#xff0c;即地址解析協議。該協議的功能就是將IP地址解析成MAC地址。 混雜模式 抓取經過網卡的所有數據包&#xff0c;包括發往本網卡和非發往本網卡的。 非混雜模式 只抓取目標地址是本網卡的數據包&#xff0c;對于發往…

《控制系統實驗與綜合設計》綜合四至六(含程序和題目)

1.電機模型辨識實驗 1.1 實驗目的 &#xff08;1&#xff09;掌握一階系統階躍響應的特點&#xff0c;通過實驗加深對直流電解模型的理解&#xff1b; &#xff08;2&#xff09;掌握系統建模過程中參數的整定&#xff0c;體會參數變化對系統的影響&#xff1b; &#xff0…

單片機開發板上外設資源講解

單片機開發電路板上簡單外設 開發板上各基礎外設LED燈按鍵&#xff1a;數碼管介紹液晶屏矩陣鍵盤掃描的概念LED點陣屏實時時鐘蜂鳴器存儲器 溫度傳感器&單總線 開發板上各基礎外設 LED燈 中文名&#xff1a;發光二極管 外文名&#xff1a;Light Emitting Diode 簡稱&…

楊校老師項目之基于單片機STC89C52的智能環境監測系統【嵌入式】

獲取全套資料&#xff1a; 有償獲取&#xff1a;mryang511688 技術&#xff1a;C語言、單片機等 摘要&#xff1a; 此設計可分為三個主要部分。此中的溫度和濕度的檢測功能&#xff0c;通過操縱單總線型溫濕度傳感器DHT11以數字形式顯示&#xff0c;實現了切確測得溫濕度的功能…

如何管理多個版本的Node.js

我們如何在本地管理多個版本的Node.js&#xff0c;有沒有那種不需要重新安裝軟件再修改配置文件和環境變量的方法&#xff1f;經過我的查找&#xff0c;還真有這種方式&#xff0c;那就是nvm&#xff08;Node Version Manager&#xff09;。 下面我就給大家介紹下NVM的使用 1…

vs2019 c++中模板 enable_if_t 的使用

&#xff08;1&#xff09; 該模板的定義如下&#xff1a; template <bool _Test, class _Ty void> struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty> struct enable_if<true, _Ty> { // type is _Ty for _Testusing …

Golang | Leetcode Golang題解之第89題格雷編碼

題目&#xff1a; 題解&#xff1a; func grayCode(n int) []int {ans : make([]int, 1<<n)for i : range ans {ans[i] i>>1 ^ i}return ans }

MSR810-LM快速配置通過LTE模塊上網

正文共&#xff1a;1111 字 13 圖&#xff0c;預估閱讀時間&#xff1a;1 分鐘 之前買了一個無線版本的MSR810-W&#xff08;淘了一臺二手的H3C企業路由器&#xff0c;就用它來打開網絡世界的大門&#xff09;&#xff0c;并整理了一份快速配置&#xff08;腳本案例來了&#x…

三菱FX3U-4AD模擬量電壓輸入采集實例

硬件&#xff1a;&#xff30;&#xff2c;&#xff23;模塊 &#xff26;&#xff38;&#xff13;&#xff27;&#xff21;-&#xff12;&#xff14;&#xff2d;&#xff34; &#xff1b;&#xff21;&#xff0f;&#xff24;模塊&#xff26;&#xff38;&#xff13…

SQL——SERVER的建表主要操作

目錄 一&#xff1a;數據存儲問題 1.表的相關數據 2.表&#xff0c;字段&#xff0c;記錄 二&#xff1a;建表 1.創建表頭 2. 數據類型 3.保存數據 4.數據冗余 5.使用命令重置表 7.設置主鍵 一&#xff1a;數據存儲問題 1.表的相關數據 表是數據庫的基本單位&…

交互原型設計工具 Axure RP 9 for Mac 正式激活版

Axure RP 9 Pro Mac版是Mac平臺上的一款專為快速原型設計而生的應用&#xff0c;Axure RP 9 Pro Mac版可以輔助產品經理快速設計完整的產品原型&#xff0c;并結合批注&#xff0c;說明以及流程圖&#xff0c;框架圖等元素&#xff0c;將產品完整地表述給各方面設計人員&#x…

Android Studio(AS)使用別人的項目與gradle包并運行項目

一、問題描述 在進行AS開發時&#xff0c;我們可能會使用到別人的項目&#xff0c;但發現別人把項目發給我們后會發現gradle項目同步失敗o(≧口≦)o&#xff0c;此時計有三&#xff1a; 1.橫行霸道、豪取搶奪&#xff1a;直接空降到項目人那里&#xff0c;強他的電腦占為己有…

Numpy的數組操作

文章目錄 數組的創建創建全0的二維數組a(3,3)全1的二維數組b&#xff08;3,4&#xff09;隨機數二維數數組c&#xff08;2,3&#xff09;效果截圖 數組的屬性查看b數組的維度查看b數組元素的個數效果截圖 數組的維度操作將數組c的行變列&#xff0c;返回最后一個元素返回數組c第…

python 虛擬環境-最簡單的教程

查看當前 python 的安裝路徑 which python 1、Anaconda創建虛擬環境 (1)執行命令&#xff1a;conda create --name env_name python3.10&#xff0c; 命令中我制定了環境名稱是env_name&#xff0c;指定了Python版本是3.10&#xff0c;執行命令后&#xff0c;Conda會自動下…