61-python中面向對象三大特性

前言:
面向對象編程,是許多編程語言都支持的一種編程思想。簡單理解是:基于模板(類)去創建實體(對象),
使用對象完成功能開發。面向對象包含三大主要特性:
封裝
繼承
多態

1. 封裝

在這里插入圖片描述

@property是Python中一個非常有用的裝飾器,它允許我們將一個方
法轉換為類的屬性。通過使用@property,我們可以像訪問普通
屬性一樣訪問方法的結果,從而提高代碼的簡潔性和可維護性。

1. 基本概念
@property裝飾器用于將一個方法定義為屬性。這意味著當我們訪問該屬性時,
實際上是在調用該方法,并返回其結果。@property的主要目的是為了提供一種
更直觀的方式來訪問和修改對象的狀態。
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File    : 10_裝飾器.py
@IDE     : PyCharm
@Author  : 劉慶東
@Date    : 2025/9/9 9:06@property裝飾器用于將一個方法定義為屬性。這意味著當我們訪問該屬性時,實際上是在調用該方法,并返回其結果。@property的主要目的是為了提供一種更直觀的方式來訪問和修改對象的狀態。
"""
class MyClass:name=Noneage=Nonedef __init__(self):self._value = 0@propertydef value(self):return self._value@value.setterdef value(self, new_value):### 能寫好多代碼self._value = new_value@value.deleterdef value(self):del self._value
#創建對象
myclass = MyClass()
#print(myclass.value)
# myclass.name 訪問的是屬性myclass.value = 100 #它方法的是方法
# 當前的value是方法
print(myclass.value)"""@property  裝飾器將value方法定義為一個只讀的屬性@value.setter 裝飾器允許我們 為value屬性設置值@value.deleter   裝飾器允許我們 刪除value屬性@property 使用場景:數據驗證:在設置屬性值得時候進行驗證動態計算: 計算屬性值不是存儲它  [流式計算]封裝復雜的邏輯 :隱藏復雜的計算或者邏輯 ,使其看起來像一個簡單的屬性訪問 # 作業 : 使用 該裝飾器  控制年齡的范圍  年齡超過100 歲 默認年齡設置為  22歲!"""
總結:
1. 封裝的概念是指?
將現實世界事物在類中描述為屬性和方法,即為封裝。
2. 什么是私有成員?為什么需要私有成員?
現實事物有部分屬性和行為是不公開對使用者開放的。同樣在類中描述屬性和方法的時候也需要達到這個要求,就需要定義私有成員了
3. 如何定義私有成員?
成員變量和成員方法的命名均以_ _作為開頭即可
4. 私有成員的訪問限制?
類對象無法訪問私有成員
類中的其它成員可以訪問私有成員

2. 繼承

在這里插入圖片描述

父類: 基類

子類 :派生類

# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File    : 11_python中繼承.py
@IDE     : PyCharm
@Author  : 劉慶東
@Date    : 2025/9/9 9:27
水果案例水果 定義為父類蘋果  橘子定義為子類人類案例Person 定義為父類說話的行為  稱為方法學生、老師  定義為子類老師說學生說"""class Fruit:#水果類  基類[父類]"""水果類 這是父類"""color="綠色" #定義類的屬性#父類中收獲的方法def harvest(self,color):print("水果是"+color+"的!")print("水果已經收獲了....")print("水果原來是:"+Fruit.color+"的!")#定義派生類
class Apple(Fruit):# Apple 是子類 也叫派生類  Fruit 是Apple的父類 也叫基類"""蘋果類 這是子類 它的父類 是 水果"""color = "紅色"def __init__(self):print("我是蘋果")#蘋果類中沒有重寫 父類的收獲的方法#定義派生類
class Orange(Fruit):# Orange 是子類 也叫派生類  Fruit 是Apple的父類 也叫基類"""橘子類 這是子類 它的父類 是 水果"""color = "橙色"def __init__(self):print("我是橘子")# 重寫父類收獲的方法def harvest(self,color):print("橘子是"+color+"的!")print("橘子已經收獲了....")print("橘子原來是:"+self.color+"的!")#創建子類橘子的對象
orange = Orange()
#調用橘子中收獲的方法
orange.harvest(orange.color)print("-------------------------------------------")
apple = Apple()  # 創建類的實例(蘋果)
#蘋果類中沒有定義 收獲的方法
apple.harvest(apple.color)  # 調用基類的harvest()方法"""
繼承的語法是:
class ClassName(baseclasslist):'''類的幫助信息''' statement 參數說明:ClassName: 用于指定類名 baseclasslist : 用于指定要繼承的父類【基類】,可以有多個,類名之間用逗號分隔我們之前沒有寫 默認繼承自 Object Object是所有的類的根類 [金字塔的頂端]statement: 類體  主要有 類變量  方法  屬性 等定義語句組成 """

3. 多態

在這里插入圖片描述

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

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

相關文章

BP-Adaboost模型

BP-Adaboost模型是一種將BP神經網絡作為弱分類器的集成學習框架,通過AdaBoost算法動態調整樣本權重和模型權重,顯著提升預測精度和泛化能力。一、模型架構與工作原理 1. 基礎框架 弱分類器單元:采用單隱藏層BP神經網絡(結構示例&a…

k230 +canMV+ LVGL控件 仿手表表盤觸摸屏滾動、選中后彈窗效果完整示例程序

現在智能手表用的越來越多,其交互方式比較有特點,現在k230開發板上,基于LVGL(Light and Versatile Graphics Library)編寫一個嵌入式GUI應用程序,使用LVGL配合觸摸屏實現模仿智能手表的表盤滾動效果,實際效果如下: 程序使用LVGL圖形庫和MediaManager程序,創建帶有觸摸…

使用Vue.js和WebSocket打造實時庫存儀表盤

大家好!今天我將分享一個簡單卻強大的實時庫存儀表盤項目,基于Vue.js和WebSocket技術。這個項目適合初學者學習前端實時數據處理,也能為你的技術博客或作品集增添亮點!通過這個教程,你將學會如何使用WebSocket實現實時…

leecode100——接雨水

題目 雙指針 思路1 使用參數存儲從左往右(從右往左同理)遍歷時的最高的柱子, 然后移動左右的指針,每次移動左右指針中偏向小的, 如果當前指針指的柱子小于最高的柱子,就會存在接到水。 思路2 把水看作柱子&…

復古膠片風格街拍人像Lr調色教程,手機濾鏡PS+Lightroom預設下載!

調色教程復古膠片風格街拍人像 Lightroom 調色,通過模擬經典膠片相機的色彩科學,為現代數碼照片注入懷舊韻味。這種調色手法注重低飽和度色彩、柔和的高光過渡和豐富的暗部細節,配合適度的顆粒感,營造出時光沉淀的質感。特別適合街…

Linux的gpio子系統

GPIO其實也是某個pin的功能之一。上一小節講解了 pinctrl 子系統,pinctrl 子系統重點是設置 PIN(有的 SOC 叫做 PAD)的復用和電氣屬性,如果 pinctrl 子系統將一個 PIN 復用為 GPIO 的話,那么接下來就要用到 gpio 子系統了。gpio 子系統顧名思…

VC++ CPU指令集檢測工具實現原理

📈 VC CPU指令集檢測工具實現原理 例圖:🧠 1. 核心原理:CPUID指令 // 使用CPUID指令獲取CPU信息 int cpuInfo[4] { -1 }; __cpuid(cpuInfo, 0); // 調用CPUID指令 int nIds cpuInfo[0]; // 獲取最大標準功能號CPUID指令工作流程…

大模型微調理論、實戰:LLaMA-Factory、Unsloth

概述 微調,Fine-Tuning,簡稱FT,可理解為對LLM的定制,目的是增強專業領域知識,并優化特定任務的性能。通過在特定數據集上微調一個預訓練模型,可實現: 更新知識:引入新的領域專屬信…

【LCA 樹上倍增】P9245 [藍橋杯 2023 省 B] 景區導游|普及+

本文涉及知識點 樹上倍增 P9245 [藍橋杯 2023 省 B] 景區導游 題目描述 某景區一共有 NNN 個景點,編號 111 到 NNN。景點之間共有 N?1N-1N?1 條雙向的擺渡車線路相連,形成一棵樹狀結構。在景點之間往返只能通過這些擺渡車進行,需要花費…

基于Python+Streamlit的旅游數據分析與預測系統:從數據可視化到機器學習預測的完整實現

🏞? 基于PythonStreamlit的旅游數據分析與預測系統:從數據可視化到機器學習預測的完整實現 📝 前言 在大數據時代,旅游行業的數據分析變得越來越重要。如何從海量的旅游數據中挖掘有價值的信息,并進行準確的銷量預測&…

飛算JavaAI全鏈路實戰:智能構建高可用電商系統核心架構

飛算JavaAI全鏈路實戰:智能構建高可用電商系統核心架構 前言:AI編程新時代的電商系統開發范式變革 在當今數字經濟時代,電商系統作為企業數字化轉型的核心載體,其復雜度和技術要求與日俱增。一個完整的電商系統不僅需要處理商品、…

論文精讀(五):面向鏈接預測的知識圖譜表示學習方法綜述

筆者鏈接:撲克中的黑桃A 專欄鏈接:論文精讀 本文關鍵詞:知識圖譜; 表示學習; 鏈接預測; 多元關系; 超關系 引 諸位技術同仁: 本系列將系統精讀的方式,深入剖析計算機科學頂級期刊/會議論文,聚焦前沿突破…

Roo Code之自定義指令(Custom Instructions),規則(Rules)

在Roo Code 中,Custom Instructions 可以通過Instructions 設定和Rules 規則文件實現。什么是Custom Instructions? 自定義指令(Custom Instructions)定義了超出Roo基本角色定義范圍的具體行為、偏好和約束。示例包括編碼風格、文檔標準、測試要求和工作…

9/8我是ai大師

一、變量定義部分(理解程序的 "記憶")c運行/* USER CODE BEGIN PV */ static uint8_t last_button_state 1; // 初始為高電平(未按下) static uint8_t device_mode 0; // 設備模式:0LD1, 1LD3, 2蜂鳴器, 3…

前沿重器[74] | 淘寶RecGPT:大模型推薦框架,打破信息繭房

前沿重器欄目主要給大家分享各種大廠、頂會的論文和分享,從中抽取關鍵精華的部分和大家分享,和大家一起把握前沿技術。具體介紹:倉頡專項:飛機大炮我都會,利器心法我還有。(算起來,專項啟動已經…

jenkins加docker 部署項目

jenkins加docker 部署springboot項目 1項目結構Dockerfile 內容 FROM openjdk:8-jdk-alpine ARG JAR_FILEtarget/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar","--server.port9090"]在A服務器上啟動jenkins …

提示詞工程(Prompt Engineering)的崛起——為什么“會寫Prompt”成了新技能?

🎀【開場 貓貓狐狐的對話】🐾貓貓扒著屏幕:“喵?咱寫的這句 Prompt 怎么又跑偏啦?明明只是想讓它幫忙寫一段 Python 代碼,它偏要給咱寫論文摘要……” 🦊狐狐瞇著眼,聲音帶點冷意&a…

供應鏈管理系統入門知識:是什么,功能模塊,怎么定制開發?

如果你是剛接觸企業運營的新手,聽到 “供應鏈管理系統” 可能會覺得有點復雜。其實,它就像一個 “智能管家”,幫企業把從買材料到賣產品的一系列流程管得明明白白。今天就用大白話給你講清楚這個系統到底是什么,以及它能幫上什么忙…

kotlin - 平板分屏,左右拖動,2個Activity計算寬度,使用ActivityOptions、Rect(三)

kotlin - 平板分屏,左右拖動,2個Activity計算寬度,使用ActivityOptions、Rect使用平板,api33才支持,可以左右拖動,分屏第一個頁面 , 思考:分屏后,對整個app的影響&#x…

v0.29.3 敏感詞性能優化之繁簡體轉換 opencc4j 優化

敏感詞性能調優系列 v0.29.0 敏感詞性能優化提升 14 倍全過程 v0.29.1 敏感詞性能優化之內部類迭代器內部類 v0.29.2 敏感詞性能優化之基本類型拆箱、裝箱的進一步優化的嘗試 v0.29.3 敏感詞性能優化之繁簡體轉換 opencc4j 優化 背景 opencc4j opencc4j 中,因…