Python實例練習---魔法方法

(主頁有對應知識點^V^)

【練習要求】

針對知識點Python面向對象的魔法方法安排的本實例。要求實現:用__init__魔法方法定義書的長,寬,高,最后用__str__輸出返回值

【重要步驟提示】

  1. 定義class書類

? ? ?2、使用init定義屬性

? ? ?3、用str的到返回值

? ? ?4、編寫代碼如下:

# 定義書類
class Book:# 初始化方法,定義長、寬、高def __init__(self, length, width, high):self.length = lengthself.width = widthself.high = high# 設置書的輸出方法def book_print(self):print(f"書的長是{self.length}厘米")print(f"書的寬是{self.width}厘米")print(f"書的高是{self.high}厘米")# 使用__str__魔法方法返回字符串def __str__(self):return f"書的長是{self.length}厘米,寬是{self.width}厘米,高是{self.high}厘米"# 使用__repr__魔法方法def __repr__(self):return f"書長:{self.length}厘米,寬:{self.width}厘米,高:{self.high}厘米"# 建立對象
book = Book(20, 3, 10)
# 調用屬性方法打印信息
book.book_print()
# 輸出結果(調用__str__)
print(book)
# 調用__repr__
print(repr(book))

【相關知識】

  • __init__:構造函數,用于初始化對象。
  • __str__:用于返回對象的可讀字符串表示形式,主要面向用戶。
  • __repr__:用于返回對象的“官方”字符串表示形式,主要面向開發者,通常用于調試。

【詳解】

    # 初始化方法,定義長、寬、高def __init__(self, length, width, high):self.length = lengthself.width = widthself.high = high
  • 類的構造函數(初始化方法)。
  • 創建?Book?對象時會自動調用這個方法。
  • 參數?length,?width,?high?分別代表書的長、寬、高。
  • self.length = length?等語句將傳入的參數值保存為對象的
# 使用__str__魔法方法返回字符串def __str__(self):return f"書的長是{self.length}厘米,寬是{self.width}厘米,高是{self.high}厘米"
  • 當使用?print(book)?或?str(book)?時,會調用這個方法。
  • 返回的是一個對用戶友好的字符串描述
  • 用于展示對象的“直觀”表示。
# 使用__repr__魔法方法def __repr__(self):return f"書長:{self.length}厘米,寬:{self.width}厘米,高:{self.high}厘米"
  • 當使用?repr(book)?或在交互式解釋器中直接輸入對象名時會調用這個方法。
  • 返回的是一個更精確、可用于調試和開發的字符串。
  • 通常建議?__repr__?的輸出應能唯一標識該對象,并且盡可能完整

__str__和__repr__對比

總結對比

方法用途輸出示例
__str__用戶友好型輸出"書的長是20厘米,寬是3厘米,高是10厘米"
__repr__開發者友好型輸出,用于調試/重建對象"書長:20厘米,寬:3厘米,高:10厘米"

💡 小貼士

  • 如果沒有定義?__str__,Python 會默認使用?__repr__
  • 如果兩個都沒有定義,則會輸出類似?<__main__.Book object at 0x...>?的地址信息。
  • 在調試時,__repr__?往往更有用;在程序運行時,__str__?更適合給用戶看。

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

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

相關文章

【從0-1的CSS】第3篇:盒子模型與彈性布局

文章目錄 盒子模型內容區content內邊距padding邊框border外邊距margin元素的寬度高度box-sizing屬性content-box&#xff1a;設置的width和height就是內容區的width和heightborder-box:設置的width和height是context padding border的width和height 彈性布局Flex容器的屬性fl…

設置LInux環境變量的方法和區別_Ubuntu/Centos

Linux環境變量可以通過export實現&#xff0c;也可以通過修改幾個文件來實現 1 通過文件設置LInux環境變量 首先是設置全局環境變量&#xff0c;對所有用戶都會生效 /etc/profile&#xff1a;該文件為系統的每個用戶設置環境信息&#xff0c;當用戶登錄時&#xff0c;該文件…

python緩存裝飾器實現方案

寫python的時候突然想著能不能用注解于是就寫了個這個 文章目錄 原始版改進點 原始版 import os import pickle import hashlib import inspect import functoolsdef _generate_cache_filename(func, *args, **kwargs):"""生成緩存文件名的內部函數""…

使用 java -jar xxxx.jar 運行 jar 包報錯: no main manifest attribute

1、問題描述 在Linux服務器上本想運行一下自己寫的一個JAR&#xff0c;但是報錯了&#xff01; no main manifest attribute, in first-real-server-1.0-SNAPSHOT.jar 2、解決辦法 在自己的Spring項目的啟動類&#xff08;xxx.xxx.xxx.XXXXApplication&#xff09;所在的Mo…

信號與槽的總結

信號與槽的總結 QT中的信號與Linux的信號對比 1&#xff09;信號源 2&#xff09;信號的類型 3&#xff09;信號的處理方式 QT信號與Linux信號的深度對比分析 一、信號源對比 QT信號 用戶定義信號 &#xff1a;由開發者通過 signals:關鍵字在QObject派生類中顯式聲明 cl…

Python Mitmproxy詳解:從入門到實戰

一、Mitmproxy簡介 Mitmproxy是一款開源的交互式HTTPS代理工具&#xff0c;支持攔截、修改和重放HTTP/HTTPS流量。其核心優勢在于&#xff1a; 多平臺支持&#xff1a;兼容Windows、macOS、Linux三端工具&#xff1a;提供命令行(mitmproxy)、Web界面(mitmweb)、數據流處理(mi…

刷題筆記--串聯所有單詞的子串

題目&#xff1a;1、我的寫法&#xff08;超時&#xff09;從題面自然想到先用回溯算法把words的全排列先算出來&#xff0c;然后遍歷字符串s一次將符合條件的位置加入結果全排列計算所有可能字符串算法寫法&#xff1a;這是一個模板用于所有全排列算法的情況&#xff0c;本質思…

操作系統【1】【硬件結構】【操作系統結構】

一、CPU如何執行程序&#xff1f; 提綱 圖靈機工作方式馮諾依曼模型線路位寬CPU位寬程序執行基本過程執行具體過程 1. 圖靈機工作方式 圖靈機可以視作“一臺帶規則的自動草稿機” 圖靈機基本組成&#xff1a; 紙帶&#xff08;內存&#xff09;&#xff1a;連續格子組成&…

SQLite與MySQL:嵌入式與客戶端-服務器數據庫的權衡

SQLite與MySQL&#xff1a;嵌入式與客戶端-服務器數據庫的權衡 在開發應用程序時&#xff0c;數據庫選擇是一個至關重要的決策&#xff0c;它會影響應用的性能、可擴展性、部署難度和維護成本。SQLite和MySQL是兩種廣泛使用的關系型數據庫管理系統&#xff0c;它們各自針對不同…

CppCon 2018 學習:Smart References

“強類型別名”&#xff08;strong typedefs&#xff09; 的動機和實現&#xff0c;配合一個簡單例子說明&#xff1a; 動機&#xff08;Motivation&#xff09; 用 using filename_t string; 和 using url_t string; 來區分不同的字符串類型&#xff08;比如文件名和網址&…

高性能高準確度的CPU電壓與溫度監測軟件HWInfo

&#x1f5a5;? 一、軟件概述 Windows版&#xff1a;圖形化界面&#xff0c;支持實時監控&#xff08;溫度、電壓、風扇轉速等&#xff09;、基準測試及報告生成&#xff0c;兼容Windows XP至Windows 11系統。Linux版&#xff1a;命令行工具&#xff0c;由openSUSE社區維護&a…

H3C WA6322 AP版本升級

1、查看當前版本&#xff1a;R2444P01 2、官網下載升級文件&#xff1a; WA6300系列版本說明H3C WA6300系列(適用于WA6330、 WA6322、WA6320H、WA6320、 WTU630H、WTU630、WA6330-LI、WA6320-C、WA6320-D、WA6320H-LI、WA6338、WA6322H、WTU632H-IOT、WAP922E、WAP923、WA6320…

用 YOLOv8 + DeepSORT 實現目標檢測、追蹤與速度估算

【導讀】 目標檢測與追蹤技術是計算機視覺領域最熱門的應用之一&#xff0c;廣泛應用于自動駕駛、交通監控、安全防護等場景。今天我們將帶你一步步實現一個完整的項目&#xff0c;使用YOLOv8 DeepSORT實現目標檢測、追蹤與速度估算。>>更多資訊可加入CV技術群獲取了解…

Python實例題:基于 Python 的簡單聊天機器人

Python實例題 題目 基于 Python 的簡單聊天機器人 要求&#xff1a; 使用 Python 構建一個聊天機器人&#xff0c;支持以下功能&#xff1a; 基于規則的簡單問答系統關鍵詞匹配和意圖識別上下文記憶功能支持多輪對話可擴展的知識庫 使用tkinter構建圖形用戶界面。實現至少 …

相機:Camera原理講解(使用OpenGL+QT開發三維CAD)

相機為三維場景提供了靈活便捷的視角變換和交互能力&#xff0c;通過相機操作可以實現全方位、各角度的場景瀏覽。 怎樣在三維場景中引入相機&#xff0c;怎樣處理和實現視角的放縮、移動、旋轉&#xff1f;在視角旋轉時以指定目標為中心又該怎樣處理&#xff1f; 原文&#…

開源的虛擬電廠預測數據:資源、應用與挑戰

引言 虛擬電廠(Virtual Power Plant, VPP)是一種通過聚合分布式能源資源(如太陽能、風能、儲能系統、電動汽車和可控負荷)來優化電力系統運行的數字化能源管理平臺。準確的預測數據是虛擬電廠高效運行的關鍵,而開源數據為研究者和企業提供了低成本、高透明度的解決方案。…

IDE全家桶專用快捷鍵----------個人獨家分享!!

給大家分享一下我個人整理的快捷鍵&#xff0c;其中包含對電腦的操作&#xff0c;以及在編寫代碼時的操作&#x1f680;Window系列1 WindowsR 開啟運行對話框--->輸入cmd啟動黑窗口?2 WindowsE 快速打開我的電腦 ?3 WindowsL 電腦鎖屏 ?4 WindowsD 顯示/恢復桌面 ?5 Win…

人工智能概念:RNN中的基礎Encoder-Decoder框架

文章目錄一、序列&#xff08;Seq2Seq&#xff09;轉換的核心架構二、Encoder-Decoder框架基礎原理2.1 整體工作流程2.2 編碼器&#xff08;Encoder&#xff09;詳解2.3 解碼器&#xff08;Decoder&#xff09;工作機制與缺陷三、基礎框架的核心缺陷分析&#xff08;以"歡…

R 列表:深入解析與高效應用

R 列表&#xff1a;深入解析與高效應用 引言 在R語言中&#xff0c;列表&#xff08;List&#xff09;是一種非常重要的數據結構&#xff0c;它允許我們將不同類型的數據組合在一起。列表在數據分析和統計建模中扮演著至關重要的角色。本文將深入探討R列表的概念、創建方法、…

uniapp 國密sm2加密

1. uniapp 國密sm2加密 在uniapp中使用國密SM2算法進行加密解密&#xff0c;你可以通過安裝第三方庫miniprogram-sm-crypto來實現。這個庫提供了SM2、SM3和SM4算法的實現&#xff0c;可以在小程序和uniapp項目中使用。 1.1. 安裝miniprogram-sm-crypto 首先&#xff0c;你需要…