前言:
面向對象編程,是許多編程語言都支持的一種編程思想。簡單理解是:基于模板(類)去創建實體(對象),
使用對象完成功能開發。面向對象包含三大主要特性:
封裝
繼承
多態
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: 類體 主要有 類變量 方法 屬性 等定義語句組成 """