Python---面向對象其他特性

1、類屬性

Python中,屬性可以分為實例屬性和類屬性。

類屬性就是 類對象中定義的屬性,它被該類的所有實例對象所共有。通常用來記錄 與這類相關 的特征,類屬性 不會用于記錄 具體對象的特征。

在Python中,一切皆對象。類也是一個特殊的對象,我們可以單獨為類定義屬性。


class Person(object):
? ? # 定義類屬性
? ? count = 0
? ? def __init(self, name, age):
? ? ? ? self.name = name
? ? ? ? self.age = age
? ? ? ??
p1 = Person('Tom', 23)
p2 = Person('Harry', 26)


2、類屬性代碼實現

定義count類屬性,用于記錄實例化Person類,產生對象的數量。


class Person(object):
? ? # 定義類屬性count
? ? count = 0

? ? # 定義一個__init__魔術方法,用于進行初始化操作
? ? def __init__(self, name):
? ? ? ? self.name = name
? ? ? ? # 對count類屬性進行+1操作,用于記錄這個Person類一共生成了多少個對象
? ? ? ? Person.count += 1

# 1、實例化對象p1
p1 = Person('Tom')
p2 = Person('Harry')
p3 = Person('Jennifer')
# 2、在類外部輸出類屬性
print(f'我們共使用Person類生成了{Person.count}個實例對象')


3、類方法

為什么需要類方法,在面向對象中,特別強調數據封裝性。所以不建議直接在類的外部對屬性進行直接設置和獲取。所以我們如果想操作類屬性,建議使用類方法。


class Tool(object):
? ? # 定義一個類屬性count
? ? count = 0
? ? # 定義一個__init__初始化方法
? ? def __init__(self, name):
? ? ? ? self.name = name
? ? ? ? Tool.count += 1
? ? # 封裝一個類方法:專門實現對Tool.count類屬性進行操作
? ? @classmethod
? ? def get_count(cls):
? ? ? ? print(f'我們使用Tool類共實例化了{cls.count}個工具')
? ? ? ??
t1 = Tool('斧頭')
t2 = Tool('榔頭')
t3 = Tool('鐵鍬')

Tool.get_count()


類方法主要用于操作類屬性或類中的其他方法。

4、靜態方法

在開發時,如果需要在類中封裝一個方法,這個方法:

① 既 不需要訪問實例屬性或者調用實例方法

② 也 不需要訪問類屬性或者調用類方法

這個時候,可以把這個方法封裝成一個靜態方法


# 開發一款游戲
class Game(object):
? ? # 開始游戲,打印游戲功能菜單
? ? @staticmethod
? ? def menu():
? ? ? ? print('1、開始游戲')
? ? ? ? print('2、游戲暫停')
? ? ? ? print('3、退出游戲')

# 開始游戲、打印菜單
Game.menu()


?

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

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

相關文章

1 接口測試介紹

在軟件測試工作中,接口測試是必不可少的。接口測試一般是發生在單元測試之后,系統測試之前。當開發人員輸出API文檔后,測試人員就可以開始編寫接口測試用例了。接口測試可以讓測試人員更早的介入,不需要等待前后端聯調完成才開始測…

銀行卡二要素API的應用案例:從在線購物到金融投資

引言 隨著互聯網技術的不斷發展,人們的金融需求也在不斷增加。隨之而來的是各種新型金融服務的涌現,讓用戶的金融體驗更加便利快捷。其中,銀行卡二要素API的應用,則為用戶的金融體驗和安全性提供了極大的保障。 銀行卡二要素API…

知識蒸餾的蒸餾損失方法代碼總結(包括:基于logits的方法:KLDiv,dist,dkd等,基于中間層提示的方法:)

有兩種知識蒸餾方法:一種利用教師模型的輸出概率(基于logits的方法)[15,14,11],另一種利用教師模型的中間表示(基于提示的方法)[12,13,18,17]。基于logits的方法利用教師的輸出作為輔助信號來訓練一個較小的…

VBA語法結構及編程思想

VBA(Visual Basic for Applications)是一種編程語言,它被用于Microsoft Office應用程序的自動化,允許用戶編寫宏來執行常規任務。VBA是基于Microsoft的Visual Basic語言,但專為Office應用程序定制。 VBA語法格式 VBA的…

【STM32】TIM定時器輸出比較

1 輸出比較 1.1 輸出比較簡介 OC(Output Compare)輸出比較;IC(Input Capture)輸入捕獲;CC(Capture/Compare)輸入捕獲和輸出比較的單元輸出比較可以通過比較CNT與CCR寄存器值&#…

JavaWeb-HTTP協議

1. 什么是HTTP協議 HTTP超文本傳輸協(Hyper Text transfer protocol),是一種用于用于分布式、協作式和超媒體信息系統的應用層協議。它于1990年提出,經過十幾年的使用與發展,得到不斷地完善和擴展。HTTP 是為 Web 瀏覽器與 Web 服務器之間的…

AI自動生成代碼工具

AI自動生成代碼工具是一種利用人工智能技術來輔助或自動化軟件開發過程中的編碼任務的工具。這些工具使用機器學習和自然語言處理等技術,根據開發者的需求生成相應的源代碼。以下是一些常見的AI自動生成代碼工具,希望對大家有所幫助。北京木奇移動技術有…

Redisson的基本使用

Redisson官網描述:Redisson 是一個在 Redis 的基礎上實現的 Java 駐內存數據網格客戶端(In-Memory Data Grid)。它不僅提供了一系列的 redis 常用數據結構命令服務,還提供了許多分布式服務,例如分布式鎖、分布式對象、…

HCIP —— BGP 基礎 (上)

BGP --- 邊界網關協議 (路徑矢量協議) IGP --- 內部網關協議 --- OSPF RIP ISIS EGP --- 外部網關協議 --- EGP BGP AS --- 自治系統 由單一的組織或者機構獨立維護的網絡設備以及網絡資源的集合。 因 網絡范圍太大 需 自治 。 為區分不同的AS&#…

vim常見操作

vim常見操作 文章目錄 vim常見操作1. 回退/前進2. 搜索3. 刪除4. 定位到50行5. 顯示行號6. 復制粘貼7. 剪貼8. 替換9. vim打開文件的時候出現 1. 回退/前進 1.esc進入命令模式 2.ctrlr 前進 u 回退2. 搜索 1) esc進入命令模式 2) /text  查找text&am…

Docker load 命令

docker load :導入使用docker save命令導出的鏡像。 語法 docker load [OPTIONS]OPTIONS 說明: --input , -i :指定導入的文件,代替STDIN。 --quiet , -q :精簡輸出信息。 實例: 導入鏡像&#xff1a…

【STM32】TIM定時器輸入捕獲

1 輸入捕獲 1.1 輸入捕獲簡介 IC(Input Capture)輸入捕獲 輸入捕獲模式下,當通道輸入引腳出現指定電平跳變時(上升沿/下降沿),當前CNT的值將被鎖存到CCR中(把CNT的值讀出來,寫入到…

ubuntu16.04安裝ROS+Gazebo

ubuntu16.04安裝ROS參考文章 ros安裝(一鍵最簡安裝,吹爆魚香ROS,請叫我魚吹) ROS篇——Ubuntu快速一鍵安裝ROS或ROS2(通用) ubuntu安裝ROS melodic(最新、超詳細圖文教程) 配置ubuntu以及安裝ros2必要環…

類風濕性關節炎口腔黏膜破裂引發抗瓜氨酸細菌和人蛋白抗體反應

今天給同學們分享一篇實驗文章“Oral mucosal breaks trigger anti-citrullinated bacterial and human protein antibody responses in rheumatoid arthritis”,這篇文章發表在Sci Transl Med期刊上,影響因子為17.1。 結果解讀: 口腔黏膜破…

Redis主從復制的配置和實現原理

Redis的持久化功能在一定程度上保證了數據的安全性,即便是服務器宕機的情況下,也可以保證數據的丟失非常少。通常,為了避免服務的單點故障,會把數據復制到多個副本放在不同的服務器上,且這些擁有數據副本的服務器可以用…

如何快速構建知識服務平臺,打造個人或企業私域流量

隨著互聯網的快速發展,傳統的知識付費平臺已經不能滿足用戶的需求。而SaaS知識付費小程序平臺則是一種新型的知識付費方式,具有靈活、便捷、高效等特點,為用戶提供了更加優質的付費知識服務。本文將介紹如何搭建自己的SaaS知識付費小程序平臺…

如何掌握構建 LMS 網站的藝術

目錄 什么是學習管理系統 (LMS) 在線課程和 LMS 網站的好處 為什么 WordPress 對于 LMS 網站很重要 統一學習中心 多功能性和可擴展性 提高教育參與度 簡化管理和監控 節省時間和費用 技能評估和績效監督 持續學習和技能提升 使用 WordPress 插件構建成功的 LMS 課程 專注于您的…

sparkc程序idea調試提示內存不足

報錯如下: Exception in thread "main" java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration. 測…

自動駕駛:傳感器初始標定

手眼標定 機器人手眼標定AxxB(eye to hand和eye in hand)及平面九點法標定 Ax xB問題求解,旋轉和平移分步求解法 手眼標定AXXB求解方法(文獻總結) 基于靶的方法 相機標定 (1) ApriTag (2) 棋盤格:cv::f…

富時中國A50指數暴跌

近年來,中國股市的波動一直備受關注,而富時中國A50指數更是其中一項備受矚目的指標之一。然而,近期卻出現了一場引人矚目的暴跌,引發了廣泛的關注和討論。 富時中國A50指數簡介 富時中國A50指數,作為富時羅素指數系列…