python-類

来源:https://www.cnblogs.com/best-mingge/archive/2020/05/12/12878303.html
-Advertisement-
Play Games

1 ## 類 2 ''' 3 在面向對象編程中,你編寫表示現實世界中的事物和情景的類,並基於這些類來創建對象。 4 編寫類時,你定義一大類對象都有的通用行為。基於類創建 對象時,每個對象都自動具備 5 這種通用行為,然後可根據需要賦予每個對象獨特的個性。 6 7 根據類來創建對象被稱為 實例化,這讓 ...


  1 ##------------------------類--------------------
  2 '''
  3 在面向對象編程中,你編寫表示現實世界中的事物和情景的類,並基於這些類來創建對象。
  4 編寫類時,你定義一大類對象都有的通用行為。基於類創建 對象時,每個對象都自動具備
  5 這種通用行為,然後可根據需要賦予每個對象獨特的個性。
  6 
  7 根據類來創建對象被稱為 實例化,這讓你能夠使用類的實例。你將指定可在實例中存儲什
  8 麽信息,定義可對這些實例執行哪些操作。你還將編寫一些類來擴展既有類的功能,讓相似
  9 的類能夠高效地共用代碼。你將把自己編寫的類存儲在模塊中,併在自己的程式文件中導入
 10 其他程式員編寫的類。
 11 '''
 12 ##總而言之,類像是一個模板,實例化就是根據模板做好的成品
 13 ##創建和使用類
 14 
 15 class Dog():
 16     def __init__(self,name,age):
 17         '''初始化屬性name和age'''
 18         self.name=name
 19         self.age=age
 20     
 21     def sit(self):
 22         '''模擬小狗被命令時蹲下'''
 23         print(str(self.name.title())+'蹲下!')
 24         
 25     def roll_over(self):
 26         '''模擬小狗被命令時打滾'''
 27         print(str(self.name.title())+'打滾!')
 28       
 29 ##實例化一個對象my_dog      
 30 my_dog=Dog('阿爾法',5)
 31 ##訪問屬性
 32 print('我的小狗的名字叫做:'+my_dog.name.title())
 33 print(my_dog.name.title()+'今年已經有'+str(my_dog.age)+'歲了!')
 34 ##調用類中的方法(函數)
 35 my_dog.sit()
 36 my_dog.roll_over()
 37 ##創建多個實例:
 38 #可按需求根據類創建任意數量的實例。
 39 your_dog=Dog('貝塔',3)
 40 your_dog.roll_over()
 41 
 42 
 43 
 44 --------------------------------------------------------------------
 45 
 46 class Car():
 47     '''一次模擬汽車的簡單嘗試'''
 48     def __init__(self,make,model,year,color):
 49         '''初始化汽車的屬性'''
 50         self.make=make
 51         self.model=model
 52         self.year=year
 53         self.color=color
 54         self.odometer_reading=10##給定的預設值
 55     def get_descriptive_name(self):
 56         '''返回整潔的描述信息'''
 57         long_name=str(self.year)+',由'+self.make+'公司'+'生產的'+self.model+self.color+'型號車的性能相當出色!'
 58         return long_name.title()
 59     def read_odometer(self):
 60         '''列印汽車的里程數'''
 61         print('這輛'+str(self.model)+'車已經行駛了'+str(self.odometer_reading)+'公裡!')
 62     
 63     #屬性值的更新方法2:
 64     def update_odomenter(self,mileage):
 65         #擴展:禁止里程數回調
 66         if mileage>=self.odometer_reading:
 67             self.odometer_reading=mileage
 68         else:
 69             print('操作非法,拒絕!')
 70     
 71     def increment_odometer(self,miles):
 72         '''將里程錶讀數增加指定的量'''
 73         self.odometer_reading+=miles
 74 my_new_car=Car('GWC','悍馬H2',2008,'銀黑色')
 75 print(my_new_car.get_descriptive_name())
 76 print(str(my_new_car.read_odometer()))
 77 ##修改屬性的值:
 78     #1.直接修改屬性的值
 79 my_new_car.odometer_reading=200##通過實例化對象直接訪問並修改
 80 my_new_car.read_odometer()
 81 
 82     #2.通過方法修改屬性的值
 83 my_new_car.update_odomenter(300)##更新屬性odometer_reading的值
 84 my_new_car.read_odometer() 
 85 #3.通過方法對屬性的值進行遞增
 86 '''
 87     有時候需要將屬性值遞增特定的量,而不是將其設置為全新的值。假設我們購買了一輛二手
 88     車,且從購買到登記期間增加了100英里的里程,下麵的方法讓我們能夠傳遞這個增量,並相
 89     應地增加里程錶讀數:
 90 '''
 91 my_new_car=Car('上海一汽','大眾',2017,'銀色')
 92 print(my_new_car.get_descriptive_name())
 93 my_new_car.update_odomenter(2000)
 94 my_new_car.read_odometer()
 95 
 96 my_new_car.increment_odometer(100)
 97 my_new_car.read_odometer()
 98  
 99  
100 ##-----------繼承---------------
101 class ElectricCar(Car):
102     '''電動汽車'''
103     def __init__(self,make,model,year,color):
104         '''初始化父類的屬性'''
105         super().__init__(make,model,year,color)
106     
107     
108     
109 my_tesla=ElectricCar('雅迪','雅迪電動車','2019','紅色')
110 print(my_tesla.get_descriptive_name())
111 my_tesla.read_odometer()##//通過繼承來的方法訪問父類創建的預設值
112 '''
113 pythin2.7繼承方法
114 
115 class Car(object):
116     def __init__(self, make, model, year):
117     -- snip --
118     
119 class ElectricCar(Car):
120     def __init__(self, make, model, year):
121         super(ElectricCar, self).__init__(make, model, year)
122 '''
123 ##給子類定義屬性和方法
124 class Bus(Car):
125     '''公交汽車'''
126     def __init__(self,make,model,year,color):
127         '''初始化父類的屬性'''
128         super().__init__(make,model,year,color)
129         self.battery_size=100##電瓶容量
130         
131     def display_battery_size(self):
132         print('這輛'+str(self.model)+'的容量是'+str(self.battery_size))
133     
134     #重寫父類的方法
135     def read_odometer(self):
136         print('此公交汽車已經行駛:'+str(self.odometer_reading)+'公裡!')
137 my_bus=Bus('天津一汽','2019-公交車','2019','墨綠色')
138 bus_massage=my_bus.get_descriptive_name()
139 print(bus_massage)
140 my_bus.display_battery_size()
141 ##調用重寫父類的方法
142 my_bus.odometer_reading+=10
143 my_bus.read_odometer()
144 
145 
146 ##將實例化的對象用作屬性
147 '''
148 使用代碼模擬實物時,你可能會發現自己給類添加的細節越來越多:屬性和方法清單以及文
149 件都越來越長。在這種情況下,可能需要將類的一部分作為一個獨立的類提取出來。你可以將大
150 型類拆分成多個協同工作的小類。
151 '''
152 class bearing():
153     def __init__(self,name='30mm軸承',materials='碳性鋼'):
154         '''初始化軸承的屬性'''
155         self.name=name
156         self.materials=materials
157     
158     def read_property(self):
159         '''返回整潔的描述信息'''
160         print(str(self.name)+'的材質是'+str(self.materials)+'打造的')
161 
162 class private_car(Car):
163     '''私家車的屬性'''
164     def __init__(self,make,model,year,color):
165         super().__init__(make,model,year,color)
166         self.number_of_passengers=4##可乘坐人數
167         self.Bearing=bearing()
168     def print_pricate_car_massage(self):
169         print('屬性:'+'\n\t廠家:'+str(self.make)+'\n\t名稱:'+str(self.model)+'\n\t生產日期:'+str(self.year)+'\n\t顏色:'+str(self.color))
170         print('載客量為:'+str(self.number_of_passengers))
171 
172 my_private_car=private_car('上海一汽','寶馬',2020,'藍色')
173 my_private_car.print_pricate_car_massage() 
174 my_private_car.bearing.read_property() 
175 
176 ##導入單個類(假設統計目錄下的hello.py文件中有個hello_friend的類)
177 from hello import hello_friend
178 ##在一個模塊中存儲多個類
179 '''雖然同一個模塊中的類之間應存在某種相關性,但可根據需要在一個模塊中存儲任意數量的類。'''
180 ##從一個模塊中導入多個類(類與類之間用逗號隔開)  
181 from hello import hello_friend,hello_teacher
182 
183 ##導入整個模塊
184 '''還可以導入整個模塊,再使用句點表示法訪問需要的類。這種導入方法很簡單,代碼也易
185 於閱讀。由於創建類實例的代碼都包含模塊名,因此不會與當前文件使用的任何名稱發生衝突。'''
186 import hello
187 
188 
189 ##導入模塊中的所有類,要導入模塊中的每個類,可使用下麵的語法:
190 from  module_name import *

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、 Pagination1. 簡介REST框架支持自定義分頁風格,你可以修改每頁顯示數據集合的最大長度。 分頁鏈接支持以下兩種方式提供給用戶: - 分頁鏈接是作為響應內容提供給用戶 - 分頁鏈接被包含在響應頭中(Content-Range或者Link) 內建風格使用作為響應內容提供給用戶。這種風格 ...
  • 關註公眾號“程式員書單” 加個“星標”,每天帶你讀好書! ​ 學習編程,數據結構是你必須要掌握的基礎知識,那麼數據結構到底是什麼呢? 其實數據結構就是用來描述電腦里存儲數據的一種數學模型,因為電腦里要存儲很多亂七八糟的數據,所以也需要不同的數據結構來描述。 瞭解了基本概念之後,接下來我們再來看看 ...
  • 這篇我們介紹一下ES的聚合功能(aggregation)。聚合是把索引數據可視化處理成可讀有用數據的主要工具。聚合由bucket桶和metrics度量兩部分組成。 所謂bucket就是SQL的GROUPBY,如下: GET /cartxns/_search { "size" : 2, "aggs": ...
  • formula 基於 groovy 實現的公式庫 項目地址 "Github" 語法 比如: 支持公式嵌套: 比如: 快速開始 1. 創建 Formula 對象 formula 1. 運行 formula.run("script") 下麵是例子: 預設公式 這裡只是拋磚引玉,實現瞭如下文本公式: UU ...
  • 垃圾回收演算法和垃圾收集器 1.什麼是垃圾回收 對於記憶體當中無用的對象進行回收,如何去判斷一個對象是不是無用的對象。 引用計數法: 每個對象中都會存儲一個引用計數,每增加一個引用就+1,消失一個引用就 1。當引用計數器為0時就會判斷該對象是垃圾,進行回收。 但是這樣會有一個弊端。就是當有兩個對象互相引 ...
  • 前言 那麼今天給大家分享的是關於python爬蟲的一個小案例,爬取的數據是圖片數據,其實咱們互聯網當中包括文本數據、圖片數據、音頻數據、視頻數據。 這些數據只要你在互聯網當中能夠用肉眼看到,都能夠通過我們爬蟲代碼批量的獲取到 cosplay是英文Costume Play的簡寫,日文コスプレ。指利用服 ...
  • 經典排序演算法 創建3個文件:sortArray.h、sortArray.c、sortArrayTest.c。 sortArray.h c include include include "sort.h" // 功能: 列印錯誤信息後就錯誤退出程式. // 參數: expression(錯誤判斷表達式 ...
  • 最開始寫的有很多迴圈的(容易理解,但複雜性高) assume cs:code,ss:stack data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986' ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...