最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python面向?qū)ο缶幊?nbsp;Class詳解

 更新時間:2026年04月06日 08:32:13   作者:shacofun  
本文介紹了面向過程編程和面向?qū)ο缶幊痰母拍?包括類、對象、封裝、繼承、多態(tài)、抽象等基礎(chǔ)知識,并通過實例講解了如何創(chuàng)建類、修改屬性值、實現(xiàn)類的繼承、特殊方法以及訪問控制等高級特性,感興趣的朋友跟隨小編一起看看吧

一、概念

1?? 面向過程編程(Procedural Programming)/pr??si?d??r?l/
以“步驟”為核心,比如C語言,一步一步執(zhí)行
2?? 面向?qū)ο缶幊蹋∣OP)
以“對象”為核心,比如Java、C++、Python,把現(xiàn)實世界抽象成“類”和“對象”

  • 類 (Class): 類就是制造對象的一個模板或藍圖。它定義了一類事物共有的屬性(數(shù)據(jù))和行為(方法)。
  • 對象 (Object): 根據(jù)類創(chuàng)建出來的具體實例。
  • 屬性(Attributes)/??tr?bju?ts/:屬性就是對象的特點或信息
  • 方法(Methods)/?meθ?dz/:法就是對象能做的動作或功能。

四大特性

  • 封裝 (Encapsulation)/?n?kæpsju?le??(?)n/:封裝是將數(shù)據(jù)和操作數(shù)據(jù)的方法綁定在一起,并對外隱藏內(nèi)部細(xì)節(jié)。通過控制訪問權(quán)限(如 private, public),我們只暴露必要的接口
  • 繼承 (Inheritance)/?n?her?t?ns/:繼承允許一個類(子類)獲取另一個類(父類)的屬性和方法。子類可以在保留父類功能的基礎(chǔ)上,增加新的功能或修改既有功能。
  • 多態(tài) (Polymorphism)/?pɑ?l??m??r?f?z?m/:多態(tài)是指“同一種行為,在不同的對象上有不同的表現(xiàn)形式”。比如“動物”類有一個“叫”的方法。當(dāng)它是“狗”對象時,輸出“汪汪”;當(dāng)它是“貓”對象時,輸出“喵喵”。
  • 抽象 (Abstraction)/æb?stræk?n/: 抽象是簡化現(xiàn)實世界復(fù)雜性的過程。只關(guān)注與當(dāng)前目標(biāo)相關(guān)的特性,而忽略無關(guān)的細(xì)節(jié)。比如在開發(fā)“掛號系統(tǒng)”時,我們只需要“病人”的姓名、病歷號,而不需要知道他的身高或喜歡的顏色。

二、實操

2.1 創(chuàng)建第一個類

#定義類
class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_info(self):
        return f"{self.year} {self.make} {self.model}"
        
    def start_engine(self):
        info = self.get_info() # 類的方法內(nèi)部也可以互相調(diào)用
        print(f"{info} 啟動了!")
#創(chuàng)建對象        
car1 = Car("Toyota", "Camry", 2020)
#調(diào)用方法
print(car1.get_info())
car1.start_engine()

----輸出:
2020 Toyota Camry
2020 Toyota Camry 啟動了!

解析
class (類),是用來定義一個類的關(guān)鍵字,在這里,我們定義了一個名為 Car的類。【類】
__init__ (構(gòu)造函數(shù)),核心就是為了初始化,不寫此函數(shù)需要手動賦值
get_info() :類中的方法**【方法】**
car1:使用Car類創(chuàng)建出car1對象**【對象】**
car1.get_info():對象調(diào)用類里get_info方法
self: 當(dāng)前這個對象自己
make, model, year: 傳入的參數(shù) 【屬性】
make, model, year 在 __init__ 的括號里是形參(占位符);而你在 Car(“Toyota”, “Camry”, 2020) 里傳入的是實參(具體的值)

如果出現(xiàn)中文亂碼:在代碼開始位置加入

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

2.2 修改屬性值

  • 動態(tài)修改屬性 :
    可以在創(chuàng)建對象之后,通過直接訪問屬性來修改它們的值。
#修改屬性的值
car1.year = 2021
print(car1.get_info())
  • 動態(tài)添加新屬性:
    可以添加類定義里根本沒有的屬性。
car1.color = "Red" # 可以動態(tài)添加屬性
print(f"{car1.get_info()} 的顏色是 {car1.color}")
  • 使用內(nèi)置函數(shù)修改:
    setattr(obj, name, val) 設(shè)置屬性值
    getattr(obj, name) 獲取屬性值
    delattr(obj, name) 刪除屬性
    hasattr(obj, name) 檢查是否有某屬性
  • 帶有參數(shù)的方法:
class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_info(self,start):# start 是臨時傳入的變量
        return f"{self.year} {self.make} {self.model}{start}"
    
          
car1 = Car("Toyota", "Camry", 2020)

print(car1.get_info("啟動了")) #輸出2020 Toyota Camry啟動了

2.3 類的繼承

子承父業(yè)

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        
    def get_info(self):
        return f"{self.year} {self.make} {self.model}"    

class ElectricCar(Car):
    def __init__(self, make, model, year, battery_size):
        #super()函數(shù)調(diào)用父類的構(gòu)造方法,初始化父類的屬性
        super().__init__(make, model, year)
        #子類特有的屬性
        self.battery_size = battery_size

#子類特有的方法
    def get_battery_info(self):
        return f"Battery size: {self.battery_size} kWh"
         
car1 = Car("Toyota", "Camry", 2020)
car2 = ElectricCar("Toyota", "Camry", 2020, 100)
print(car1.get_info())#輸出:2020 Toyota Camry
print(car2.get_battery_info())#輸出:Battery size: 100 kWh
print(car2.get_info() + " " + car2.get_battery_info())#輸出:2020 Toyota Camry Battery size: 100 kWh

super() :它是子類向父類“借東西”的工具。super().init(…) 的意思是:先把父類里定義好的初始化邏輯跑一遍
如果子類想修改父類方法,直接重寫即可

 def get_info(self):
        # 調(diào)用父類的方法獲取基礎(chǔ)信息,再加上電車特有的信息
        basic_info = super().get_info()
        return f"{basic_info} (純電動模式)"
print(car2.get_info()) #輸出2020 Toyota Camry (純電動模式)

2.4 類的特殊方法

名稱前后都有雙下劃線
A. 生命周期類(對象的創(chuàng)建與銷毀)
__init__(self, …)`: 初始化方法。在創(chuàng)建對象時自動調(diào)用,用于設(shè)置初始屬性。

__new__(self, ...): 創(chuàng)建實例的方法。在 __init__ 之前執(zhí)行,通常在自定義元類或單例模式時才用到。

__del__(self): 析構(gòu)方法。當(dāng)對象被銷毀(垃圾回收)時觸發(fā)。
B. 字符串表示類(讓對象“好看”)
這是開發(fā)中最常用的,用來定義當(dāng)你 print 一個對象時顯示什么。
__str__print(obj)str(obj)給用戶看的,返回友好的描述
__repr__ : 直接輸入對象名或 repr(obj)給開發(fā)者看的,返回準(zhǔn)確的調(diào)試信息

class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def __str__(self):
        return f"這是一輛 {self.make} {self.model}"

car = Car("Toyota", "Camry")
print(car)  # 輸出: 這是一輛 Toyota Camry
#平時調(diào)用是直接

C. 算術(shù)運算符類(讓對象能加減乘除)
如果你想讓兩個對象相加(比如 car1 + car2),你需要定義這些方法:
__add__(self, other): 對應(yīng) +
__sub__(self, other): 對應(yīng) -
__mul__(self, other): 對應(yīng) *
__eq__(self, other): 對應(yīng) ==
D. 長度與容器類(讓對象像列表一樣工作)
__len__(self): 對應(yīng) len(obj)。
__getitem__(self, key): 對應(yīng) obj[key],讓對象可以像字典或列表一樣取值。
__contains__(self, item): 對應(yīng) item in obj。

2.5 類的訪問控制

在 Python 中,類的訪問控制主要依靠命名約定和名稱修飾,來提示開發(fā)者哪些屬性和方法不應(yīng)該被外部代碼直接訪問或修改。

訪問類型格式外部訪問
Publicname?
Protected_name??
Private__name?
class Example:
    def __init__(self):
        self._protected_var = "這是一個受保護的屬性"
    def _protected_method(self):
        return "這是一個受保護的方法"

obj=Example()
print(obj._protected_var)  # 輸出: 這是一個受保護的屬性
print(obj._protected_method())  # 輸出: 這是一個受保護的方法
class Example:
    def __init__(self):
        self.__private_var = "這是一個私有的屬性"
    def __private_method(self):
        return "這是一個私有方法"

obj=Example()      
# print(obj.__private_var)  # 輸出: 報錯  
# print(obj.__private_method())  # 輸出: 報錯     
print(obj._Example__private_var)  # 輸出: 這是一個私有的屬性
print(obj._Example__private_method())  # 輸出: 這是一個私有方法

Getter (訪問器) 和 Setter (修改器):

class User:
    def __init__(self, age):
        self.__age = age

    def get_age(self):
        return self.__age

    def set_age(self, value):
        self.__age = value

u = User(20)
u.set_age(21)   
print(u.get_age())

Pythonic 風(fēng)格(使用 @property裝飾器)
在不修改原函數(shù)代碼的前提下,給函數(shù)添加額外的功能。
在代碼中,裝飾器以 @裝飾器名 的形式放在函數(shù)定義的上方.

class User:
    def __init__(self,age):
        self.__age=age
    @property
    def age(self):
        return self.__age
    @age.setter
    def age(self,value):
        if value < 0:
            print("年齡不能為負(fù)數(shù)")
        else:
            self.__age = value

user = User(25)
print(user.age)  # 輸出: 25
user.age = -5  # 輸出: 年齡不能為負(fù)數(shù)
print(user.age)  # 輸出: 25 (年齡沒有改變)

相關(guān)學(xué)習(xí)代碼下載見附件

到此這篇關(guān)于Python面向?qū)ο缶幊?Class詳解的文章就介紹到這了,更多相關(guān)Python面向?qū)ο缶幊?Class內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)超級瑪麗游戲

    python實現(xiàn)超級瑪麗游戲

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)超級瑪麗游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python網(wǎng)絡(luò)編程詳解

    Python網(wǎng)絡(luò)編程詳解

    這篇文章主要介紹了Python網(wǎng)絡(luò)編程詳解,涉及具體代碼示例,還是挺不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • python利用json和pyecharts畫折線圖實例代碼

    python利用json和pyecharts畫折線圖實例代碼

    這篇文章主要介紹了python利用json和pyecharts畫折線圖實例,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Django 跨域請求處理的示例代碼

    Django 跨域請求處理的示例代碼

    本篇文章主要介紹了Django 跨域請求處理的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • python中WSGI是什么,Python應(yīng)用WSGI詳解

    python中WSGI是什么,Python應(yīng)用WSGI詳解

    這篇文章主要介紹一下python中的WSGI, 小編在網(wǎng)上找了幾篇非常好的關(guān)于WSGI介紹,整理一下分享給大家。
    2017-11-11
  • Python代理抓取并驗證使用多線程實現(xiàn)

    Python代理抓取并驗證使用多線程實現(xiàn)

    這里沒有使用隊列只是采用多線程分發(fā)對代理量不大的網(wǎng)頁還行但是幾百幾千性能就很差了,感興趣的朋友可以了解下,希望對你有所幫助
    2013-05-05
  • Python解析cyber record文件的示例詳解

    Python解析cyber record文件的示例詳解

    cyber record 是 Cyber RT 中用于錄制和回放數(shù)據(jù)的工具,本文將為大家展示一下如何使用Python進行解析cyber record文件,需要的可以參考下
    2025-02-02
  • python如何創(chuàng)建等差數(shù)列

    python如何創(chuàng)建等差數(shù)列

    這篇文章主要介紹了python如何創(chuàng)建等差數(shù)列的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Pytest測試框架基本使用方法詳解

    Pytest測試框架基本使用方法詳解

    這篇文章主要介紹了Pytest測試框架基本使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Django項目創(chuàng)建到啟動詳解(最全最詳細(xì))

    Django項目創(chuàng)建到啟動詳解(最全最詳細(xì))

    這篇文章主要給大家介紹了關(guān)于Django項目創(chuàng)建到啟動的步驟,本文介紹的方法算是最全最詳細(xì)的一個項目,需要的朋友可以參考下
    2019-09-09

最新評論

施甸县| 南木林县| 治县。| 会昌县| 富阳市| 三江| 义马市| 华阴市| 临海市| 贵州省| 九寨沟县| 自贡市| 青铜峡市| 清涧县| 通江县| 大厂| 兰州市| 蕉岭县| 崇信县| 靖安县| 定襄县| 宿迁市| 含山县| 富平县| 郑州市| 舞钢市| 陇西县| 卢龙县| 乐安县| 稷山县| 光山县| 汉川市| 巴彦淖尔市| 邳州市| 岳普湖县| 治县。| 祁东县| 张家港市| 义乌市| 饶平县| 开原市|