Python學習—— 類與對象

在剛接觸編程時,我們就了解到編程界有兩大思想:面向過程與面向對象,Python 就是一門面向對象的語言,如果你了解過面向對象的思想,自然就知道面向對象思想包含兩個基本概念:類與對象 ,下面我們就一起詳細學習下 Python 的類與對象吧!

1 基本概念

1.1 面向對象

面向對象是一種抽象,是一種用分類的方式看待問題的方法,用 Java 的編程思想來說就是:萬物皆對象;面向對象有三大特性:封裝、繼承、多態。

1.2 類

上面說了面向對象是一種用分類的方式看待問題的方法,一個分類就是一個類,可以把類看作是一個抽象的模板,如:Car 類。

1.3 對象

對象是根據類創建出來的一個個實例。

2 基本使用

2.1 類的定義

# 類的定義
class Car:pass

2.2 對象的創建

# 創建 Car 的實例對象 c
class Car:passc = Car()

2.3 類中定義屬性???????

# 定義 Car 類的屬性 name
class Car:name = 'BMW'

3 類中的方法

3.1 內置方法

Python 創建任何一個類的時候,都會包含一些內置的方法,主要包括如下:

方法說明
__init__構造函數,在生成對象時調用
__del__析構函數,釋放對象時使用
__repr__打印,轉換
__setitem__按照索引賦值
__getitem__按照索引獲取值
__len__獲得長度
__cmp__比較運算
__call__函數調用
__add__加運算
__sub__減運算
__mul__乘運算
__div__除運算
__mod__求余運算
__pow__乘方
3.2 自定義方法

Python 有三種常見的方法,分別為:實例方法、類方法、靜態方法,這三種方法都定義在類中。

3.2.1 類方法

類方法是將類本身作為對象進行操作的方法。

定義與使用???????

'''
類方法(可調類變量、可被實例調用、可被類調用)
1、類方法通過@classmethod裝飾器實現,只能訪問類變量,不能訪問實例變量;
2、通過cls參數傳遞當前類對象,不需要實例化。
'''
class Car(object):name = 'BMW'def __init__(self, name):self.name = name@classmethoddef run(cls,speed):print(cls.name,speed,'行駛')
# 訪問方式1
c = Car("寶馬")
c.run("100邁")
# 訪問方式2
Car.run("100邁")
3.2.2 靜態方法

靜態方法是類中的函數,不需要實例。

定義與使用???????

'''
靜態方法(可調類變量、可被實例調用、可被類調用)
1、用 @staticmethod 裝飾的不帶 self 參數的方法;
2、靜態方法名義上歸類管理,實際中在靜態方法中無法訪問類和實例中的任何屬性;
3、調用時并不需要傳遞類或實例。
'''
class Car(object):name = 'BMW'def __init__(self, name):self.name = name@staticmethoddef run(speed):print(Car.name,speed,'行駛')# 訪問方式1
c = Car("寶馬")
c.run("100邁")
# 訪問方式2
Car.run("100邁")
3.2.3 實例方法

實例方法就是類的實例能夠使用的方法。

定義與使用???????

# 實例方法(可調類變量、可調實例變量、可被實例調用)
# 第一個參數強制為實例對象 self。
class Car(object):name = 'BMW'def __init__(self, name):self.name = namedef run(self,speed):print(self.name,speed,'行駛')# 訪問
c = Car("寶馬")
c.run("100邁")

4 類的繼承

定義與使用???????

# 基本語法:class ClassName(BaseClassName)
# 父類
class Car(object):name = 'BMW'def __init__(self, name):self.name = namedef run(self,speed):print(self.name,speed,'行駛')# 子類
class BMWCar(Car):conf = "經濟適用型"pass# 調用父類 Car 中 run 方法
bc = BMWCar("BMW經濟適用型轎車")
bc.run("100邁")

5 類的多態

定義與使用???????

# 父類
class Car(object):name = 'BMW'def __init__(self, name):self.name = namedef run(self,speed):print('Car-->',self.name,speed,'行駛')# 子類1
class BMWCar(Car):def run(self,speed):print('BMWCar-->',self.name,speed,'行駛')# 子類2
class SVWCar(Car):def run(self,speed):print('SVWCar-->',self.name,speed,'行駛')# 調用 run 方法
c = Car("Car")
c.run("120邁")bc = BMWCar("寶馬")
bc.run("100邁")sc = SVWCar("大眾")
sc.run("80邁")# 輸出結果
'''
Car--> Car 120邁 行駛
BMWCar--> 寶馬 100邁 行駛
SVWCar--> 大眾 80邁 行駛
'''

在上面的例子中,我們可以看出:c、bc 、sc 是不同類型的對象,在它們調用 run 方法時,調用的均是各自類中的方法,這就是多態。

總結

本節給大家介紹了 Python 類與對象的定義和使用,對 Python 工程師提供了支撐,能夠根據實際情況在項目中靈活使用不同類型的方法。

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

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

相關文章

10個頂級的論文降重指令,讓你的論文降重至1.9%

10個頂級的論文降重指令,本碩博寫論文必備! 在ChatGPT4o對話框中輸入:寫一個Spring BootVue實現的車位管理系統的論文大綱,并對其具體章節進行詳細描述。 幾小時即可完成一份1萬字論文的編寫 在GPTS中搜索論文降重,使…

Milvus 使用過程中的常見問題集錦

引言 在使用Milvus的過程中,可能會遇到一些常見問題。這些問題可能涉及到配置、查詢、數據同步等方面。 常見問題 以下是一些可能遇到的常見問題及其解決方法: 查詢結果不正確: 可能原因:Milvus內部緩存與數據不一致&#xff0…

RPA(機器人流程自動化)技術解讀

什么是RPA RPA(Robotic Process Automation),譯為流程自動化機器人,又可以稱為數字化勞動力(Digital Labor),是一種智能化軟件,通過模擬并增強人類與計算機的交互過程,實…

2024 電工杯高校數學建模競賽(B題)數學建模完整思路+完整代碼全解全析

你是否在尋找數學建模比賽的突破點?數學建模進階思路! 作為經驗豐富的數學建模團隊,我們將為你帶來2024電工杯數學建模競賽(B題)的全面解析。這個解決方案包不僅包括完整的代碼實現,還有詳盡的建模過程和解…

Aware接口作用

介紹 Aware(感知)接口是一個標記,里面沒有任何方法,實際方法定義都是子接口確定(相當于定義了一套規則,并建議子接口中應該只有一個無返回值的方法)。 我們知道spring已經定義好了很多對象,如…

2024 電工杯高校數學建模競賽(A題)| 儲能配置 |建模秘籍文章代碼思路大全

鐺鐺!小秘籍來咯! 小秘籍團隊獨辟蹊徑,運用負載均衡,多目標規劃等強大工具,構建了這一題的詳細解答哦! 為大家量身打造創新解決方案。小秘籍團隊,始終引領著建模問題求解的風潮。 抓緊小秘籍&am…

C 語言設計模式(結構型)

文章目錄 代理模式場景示例 門面模式場景示例 橋接模式場景示例 適配器模式場景示例 外觀模式場景示例 享元模式場景示例 裝飾器模式場景示例 組合模式場景示例 代理模式 C語言中,代理模式通常用于實現對象的間接訪問。代理模式是一種結構型設計模式,它…

微信小程序uniapp+django洗腳按摩足浴城消費系統springboot

原生wxml開發對Node、預編譯器、webpack支持不好,影響開發效率和工程構建。所以都會用uniapp框架開發 前后端分離,后端給接口和API文檔,注重前端,接近原生系統 使用Navicat或者其它工具,在mysql中創建對應名稱的數據庫&#xff0…

Java中字符串拼接方式

在Java編程中,字符串是非常基礎且重要的數據類型。無論是處理用戶輸入、生成日志信息還是構建復雜的文本輸出,字符串拼接都是一個不可避免的操作。本文將詳細探討幾種常見的字符串拼接方式,并分析它們的優缺點,以幫助開發者選擇最…

GO實名認證接口開發示例、接口集成、身份認證

翔云身份證實名認證接口,通過核驗身份證二要素、三要素、三要素現場人像的方式,實時聯網核驗身份信息的真偽。想象一下,無需耗費大量的人力物力,只需簡單幾步,即可將翔云身份證實名認證接口集成到您的應用中。 無論是…

集成框架 -- 項目啟動時創建mysql數據庫結構

使用 Spring JDBC DataSource 初始化 前言正文配置Spring JDBC的DataSource初始化application.propertiesapplication.yml 使用 data.sql 進行數據庫初始化application.propertiesapplication.ymlapplication.propertiesapplication.yml 前言 項目中要使用一些數據庫&#xff…

xjoi題庫一級二段題解(c語言版)

開根號 時間:0.2 空間:32M 題目描述: 輸入一個整數, 求它的平方根,輸出答案向下取整. 比如5√2, 16??√4 輸入格式: 輸入一個整數 輸出格式: 輸出一個整數 樣例輸入1: 5 樣例輸出1: 2 樣例輸…

cn.hutool.poi.excel 實現excel導出效果 首行高度,行樣式,顏色,合并單元格,例子樣式

需求 接了需求,下載excel模版,本來看著還是簡單的,然后實現起來一把淚,首先是使用poi,我查了好久,才實現,然后是我用easyexcel又實現了一遍,用了一個周多才實現。 這是需求&#x…

Python使用virtualenv創建虛擬環境

目錄 第一步:安裝virtualenv 第二步:選擇一個文件夾用來放所創建的虛擬環境 第三步:創建虛擬環境 第四步:激活虛擬環境 第五步:退出虛擬環境 第六步:測試安裝django 前提:你得有個python環…

【STL專題】深入探索C++之std::string:不止于字符串【萬字詳解】

歡迎來到CILMY23的博客 🏆本篇主題為:深入探索C之std::string:不止于字符串 🏆個人主頁:CILMY23-CSDN博客 🏆系列專欄:Python | C | C語言 | 數據結構與算法 | 貪心算法 | Linux &#x1f3…

IOS手機自動化一些工具的簡單有哪些?

iOS手機自動化測試或操作可以通過多種工具來實現,這些工具提供了豐富的功能,可以幫助開發者和測試人員提高效率。以下是一些簡單的iOS自動化工具: 1. Xcode: 蘋果官方提供的開發工具,包含了iOS應用開發、調試和自動化測試的功能。…

aardio - godking.vlistEx虛表點擊表頭全選、排序

新版虛表內置了名稱為 DefaultCheckedImg 和 DefaultUnCheckedImg 的兩張圖片,分別為 【選擇框勾選狀態默認圖片】 和 【選擇框未勾選狀態默認圖片】 以下代碼調用了這兩張圖片,所以請將虛表庫升級為最新版。 如果使用舊版庫,可以自行添加這…

【Python自動化測試】:Unittest單元測試與HTMLTestRunner自動生成測試用例的好幫手

讀者大大們好呀!!!?????? 🔥 歡迎來到我的博客 👀期待大大的關注哦?????? 🚀歡迎收看我的主頁文章??尋至善的主頁 文章目錄 🔥前言🚀unittest編寫測試用例🚀unittest測…

六種常用設計模式

單例設計模式 單例模式指在整個系統生命周期里,保證一個類只能產生一個實例,確保該類的唯一性。 單例模式分類 單例模式可以分為懶漢式和餓漢式,兩者之間的區別在于創建實例的時間不同: 懶漢式:指系統運行中&#…

SpringBootWeb 篇-深入了解 Mybatis 刪除、新增、更新、查詢的基礎操作與 SQL 預編譯解決 SQL 注入問題

🔥博客主頁: 【小扳_-CSDN博客】 ?感謝大家點贊👍收藏?評論? 文章目錄 1.0 Mybatis 的基礎操作 2.0 基礎操作 - 環境準備 3.0 基礎操作 - 刪除操作 3.1 SQL 預編譯 3.2 SQL 預編譯的優勢 3.3 參數占位符 4.0 基礎操作 - 新增 4.1 主鍵返回…