Python系統學習1-9-類一之類語法

一、類之初印象

1、類就是空表格,將變量(列名)和函數(行為)結合起來

2、創建對象,表達具體行

3、創建類就是創建數據的模板

? ? ? ? --操作數據時有提示

? ? ? ? --還能再組合數據的行為

? ? ? ? --結構更加清晰

4、類的內存分配

?5、練習

"""參照day08/homework/exercise01創建餐廳類-- 變量:字典的鍵-- 函數:打印
"""
# 類統一了字典所有key,并提供了相關函數
class Restaurant:def __init__(self, city, name="", remark=0, money=0):self.city = cityself.name = nameself.remark = remarkself.money = moneydef display(self):print("%s在%s地區,點評人數%s,人均消費%s元." % (self.name, self.city, self.remark, self.money))# 創建對象
# --(1)根據實例變量開辟空間
# --(2)執行__init__函數
xqwct = Restaurant("北京", "星期五餐廳", 2847, 180)
tmz = Restaurant("北京","鐵木真",3497,104)
print(xqwct.remark)
# 通過對象調用函數,自動將對象作為參數傳遞給self
xqwct.display() # display(xqwct)
tmz.display()

?二、類語法

(1)類定義

1、代碼
class 類名:"""文檔說明"""def __init__(self,參數):self.實例變量 = 參數def 實例方法(self,參數):pass
2、說明
????????-- 類名所有單詞首字母大寫
????????-- init 也叫構造函數,創建對象時被自動調用,也可以省略。
????????-- self 變量綁定的是被創建的對象,名稱可以隨意 self就是對象
3、實例化
? ? ? 代碼:對象名 = 類名 ( 數據 )
說明:
????????-- 對象名存儲的是實例化后的對象地址
????????-- 類名后面的參數按照構造函數的形參傳遞(__init__函數)

(2)實例成員

1、實例變量
定義:對象 . 變量名(self.變量名)
調用:對象 . 變量名
說明 通常在構造函數 (__init_) 中創建,首次通過對象賦值為創建,再次賦值為修改.
? ? ? ? ? ? 每個對象存儲一份,通過對象地址訪問
__dict__ :對象的屬性,用于存儲自身實例變量的字典。
2、實例方法

?????????def 方法名(self,參數):

????????????????方法體(通過“self.變量名"訪問實例變量)

調用:對象名.方法名(變量)

說明:至少有一個形參,第一個參數綁定調用這個方法的對象 , 一般命名為self
? ? ? ? ? ?無論創建多少對象,方法只有一份,并且被所有對象共享。
# 類中self就是對象名
# 類外自己命名的為對象名
class Epidemic:def __init__(self, region):# 創建實例變量self.region = regionself.display()# 定義實例方法def display(self):print(self.region)bj = Epidemic("北京")
bj.display()# 讀取實例變量
print(bj.region)
# python語言將實例變量存入字典
print(bj.__dict__)  # {'region': '北京'}# Python支持在類外創建實例變量,不建議使用
"""
class Epidemic:pass
sh = Epidemic()
sh.region = "上海" # 當前對象有此實例,其他對象無
print(sh.region)
dd = Epidemic()
# print(dd.region) 錯誤
"""# 建議在__init__ 中定義實例變量
"""
class Epidemic:def set_name(a, name):  # self 可以為任意命名為其他# 創建實例變量a.name = name
bj = Epidemic()
bj.set_name("北京")
print(bj.name)
print(bj)  # 打印自定義對象,輸出為真實內存地址
"""
3、類實例化內存分配

?

?

?(3)跨類調用

?跨類調用語法1:直接創建對象

????????語義:XX每次去東北都開一輛新車,因為Car()為局部變量

????????通俗:每次用新的

class Person:def __init__(self, name):self.name = namedef driver(self):print(self.name,"駕駛去東北")car = Car()car.run()class Car:def run(self):print("騎車在行駛")lz = Person("老張")
ll = Person("老李")
lw = Person("老王")lz.driver()  # 老張駕駛新車去東北
ll.driver()  # 老李駕駛新車去東北
lw.driver()  # 老王駕駛新車去東北
lz.driver()  # 老張駕駛新車去東北
?跨類調用語法2:在構造函數中創建對象

????????語義:XX每次去東北都開自己的車,__init__只執行一次

????????通俗:每次用舊的

class Person:def __init__(self, name):self.name = nameself.car = Car() # 每個對象一個def driver(self):print(self.name,"駕駛去東北")# car = Car() # 多次就是多個self.car.run()class Car:def run(self):print("騎車在行駛")lz = Person("老張")  # __init__ 造車,只有一次
lz.driver()
lz.driver()

?跨類調用語法3:通過參數傳遞對象,建議使用

????????語義:XX每次去東北都乘交通工具

????????通俗:每次用的時候再選擇

class Person:def __init__(self, name):self.name = namedef driver(self,vehicle):print(self.name,"駕駛去東北")vehicle.run()class Car:def run(self):print("騎車在行駛")lz = Person("老張")  # __init__ 造車,只有一次
car = Car()
# 沒有定義類時,確定關系
# 而是在用類時,確定關系
lz.driver(car)

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

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

相關文章

vue項目根據word模版導出word文件

一、安裝依賴 //1、docxtemplaternpm install docxtemplater pizzip -S//2、jszip-utilsnpm install jszip-utils -S//3、pizzipnpm install pizzip -S//4、FileSaver npm install file-saver --save二、創建word模版 也就是編輯一個word文檔,文檔中需要動態取值的…

【JAVA】數組練習

? 作者:小胡_不糊涂 🌱 作者主頁:小胡_不糊涂的個人主頁 📀 收錄專欄:淺談Java 💖 持續更文,關注博主少走彎路,謝謝大家支持 💖 數組練習 1. 數組轉字符串2. 數組拷貝3.…

arm-linux-gnueabihf-g++ gcc編譯、優化命令 匯總

gcc優化選項,可在編譯時間,目標文件長度,執行效率三個維度,進行不同的取舍和平衡。 gcc 常用編譯選項 arm-linux-gnueabihf-g -O3 -marcharmv7-a -mcpucortex-a9 -ftree-vectorize -mfpuneon -mfpuvfpv3-fp16 -mfloat-abihard -…

js的FileSaver.saveAs()方法:監聽保存進度,進度條等方法

在使用FileSaver.saveAs保存表格到本地時,如果想要獲取導出/保存進度可以如下操作 FileSaver.js的saveAs()方法是一個異步操作,它將文件保存到用戶設備上。在調用saveAs()方法后,可以通過使用回調函數、Promise、或監聽相關事件來確定saveAs(…

在vue中使用swiper輪播圖(搭配watch和$nextTick())

在組件中使用輪播圖展示圖片信息: 1.下載swiper,5版本為穩定版本 cnpm install swiper5 2.在組件中引入swiper包和對應樣式,若多組件使用swiper,可以把swiper引入到main.js入口文件中: import swiper/css/swiper.css //引入swipe…

SpringBoot系列---【SpringBoot在多個profiles環境中自由切換】

SpringBoot在多個profiles環境中自由切換 1.在resource目錄下新建dev,prod兩個目錄,并分別把dev環境的配置文件和prod環境的配置文件放到對應目錄下,可以在配置文件中指定激活的配置文件,也可以默認不指定。 2.在pom.xml中最后位置…

07微服務的事務管理機制

一句話導讀 在單體應用程序中,事務通常是在單個數據庫或單個操作系統中管理的,而在微服務架構中,事務需要跨越多個服務和數據庫,這就使得事務管理變得更加復雜和困難。 目錄 一句話導讀 一、微服務事務管理的定義和意義 二、微…

Layui列表表頭去掉復選框改為選擇

效果&#xff1a; 代碼&#xff1a; // 表頭復選框去掉改為選擇 $(".layui-table th[data-field"0"] .layui-table-cell").html("<span>選擇</span>");

做好以下幾點,可以讓我們延長周末體驗感,好好放松!!!

工作以后常常容易感到疲于奔命&#xff0c;讓我們找到適合自己方式&#xff0c;來讓我們度過一個充實放松的周末! 方向一&#xff1a;分享你周末的時間規劃 我們可以把每個月當做一個周期&#xff0c;制定一個簡單的計劃&#xff0c;如&#xff1a;第一周&#xff0c;鍛煉身體…

基于Prometheus監控Kubernetes集群

目錄 一、環境準備 1.1、主機初始化配置 1.2、部署docker環境 二、部署kubernetes集群 2.1、組件介紹 2.2、配置阿里云yum源 2.3、安裝kubelet kubeadm kubectl 2.4、配置init-config.yaml 2.5、安裝master節點 2.6、安裝node節點 2.7、安裝flannel、cni 2.8、部署測…

Go 1.21新增的內置函數(built-in functions)詳解

Go 1.21新增的內置函數分別是 min、max 和 clear&#xff0c;接下來看下這幾個函數的用途和使用示例。 在編程過程中&#xff0c;需要知道一組值中的最大或最小值的場景是很常見的&#xff0c;比如排序、統計等場景。之前都需要自己寫代碼來實現這個功能&#xff0c;現在 Go 1…

低成本無刷高速吹風機單片機方案

高速吹風機的轉速一般是普通吹風機的5倍左右。一般來說&#xff0c;吹風機的電機轉速一般為2-3萬轉/分鐘&#xff0c;而高速吹風機的電機轉速一般為10萬轉/分鐘左右。高轉速增加了高風速。一般來說&#xff0c;吹風機的風力只有12-17米/秒&#xff0c;而高速吹風機的風力可以達…

安卓獲取當前的IP地址

文章目錄 獲取IP地址完整示例代碼 獲取IP地址 在安卓中&#xff0c;我們使用靜態方法NetworkInterface.getNetworkInterfaces() 來獲取當前設備上所有的網絡接口。 網絡接口是指設備上用于進行網絡通信的硬件或軟件。這些接口可以是物理接口&#xff08;如以太網接口、無線網…

使用Docker搭建MySQL主從復制(一主一從)

Docker安裝MySQL docker pull mysql:5.7 docker images mysql安裝步驟 1.新建主服務器容器實例3307 docker run -p 3307:3306 --name mysql-master -v /usr/local/docker/mysql5.7/data/mysql-master/logs:/var/log/mysql -v /usr/local/docker/mysql5.7/data/mysql-master/…

Day 31 C++ STL常用算法(下)

文章目錄 常用拷貝和替換算法copy——容器內指定范圍的元素拷貝到另一容器中函數原型注意——利用copy算法在拷貝時&#xff0c;目標容器要提前開辟空間示例 replace——將容器內指定范圍的第一個舊元素修改為新元素函數原型注意——replace只會替換區間內滿足條件的第一個舊元…

cve-2016-7193:wwlib 模塊堆數據結構溢出

簡介 漏洞編號&#xff1a;cve-2016-7193漏洞類型&#xff1a;堆溢出軟件名稱&#xff1a;Office模塊名稱&#xff1a;wwlib歷史漏洞&#xff1a;較多影響的版本 攻擊利用&#xff1a;APT 攻擊利器-Word 漏洞 CVE-2016-7193 原理揭秘 操作環境 系統&#xff1a;Win10 1607軟…

C++ 動態內存

C 動態內存 C 程序中的內存分為兩個部分&#xff1a; 棧&#xff1a;在函數內部聲明的所有變量都將占用棧內存堆&#xff1a;這是程序中未使用的內存&#xff0c;在程序運行時可用于動態分配內存 很多時候&#xff0c;無法提前預知需要多少內存來存儲某個定義變量中的特定信…

【Docker報錯】docker拉取鏡像時報錯:no such host

報錯信息 [rootSoft soft]# docker pull mysql Using default tag: latest Error response from daemon: Head "https://registry-1.docker.io/v2/library/mysql/manifests/latest": dial tcp: lookup registry-1.docker.io on 192.168.80.2:53: no such host解決方法…

3D模型格式轉換工具如何與Parasolid集成?

概述 HOOPS Exchange包括一個 Parasolid 連接器&#xff0c;它允許 Parasolid 開發人員輕松地將 CAD 數據導入到活動的 Parasolid 會話中。如果源數據基于 Parasolid&#xff08;NX、Solid Edge 或 SolidWorks&#xff09;&#xff0c;則數據將按原樣導入。 這意味著您可以假…

主數據管理案例-某政務

1、 背景介紹及難點分析 近年來&#xff0c;我國在大數據發展方面持續發力&#xff0c;取得了明顯成效。但也要看到&#xff0c;目前我國大數據發展還存在“孤島化”“碎片化”等問題&#xff0c;無序參與過度與創新參與不足并存&#xff0c;導致大數據資源配置統籌不&#xff…