組合

来源:https://www.cnblogs.com/HZLS/archive/2019/03/23/10586193.html
-Advertisement-
Play Games

一,解決類與類之間代碼允餘問題有兩種方案: 1,繼承 2,組合 1,繼承:描述的是類與類之間,什麼是什麼的關係 2,組合:描述的是類與類之間的關係,是一種什麼有什麼關係 一個類產生的對象,該對象擁有一個屬性,這個屬性的值是來自另一個類的對象 二,組合練習: ...


一,解決類與類之間代碼允餘問題有兩種方案:  1,繼承    2,組合

1,繼承:描述的是類與類之間,什麼是什麼的關係

2,組合:描述的是類與類之間的關係,是一種什麼有什麼關係

一個類產生的對象,該對象擁有一個屬性,這個屬性的值是來自另一個類的對象

 1 class Date:
 2     def __init__(self,year,mon,day):
 3         self.year = year
 4         self.mon = mon
 5         self.day = day
 6 
 7     def tell_birth(self):
 8         print('出生年月日<%s-%s-%s>' % (self.year, self.mon, self.day))
 9 
10 class OldboyPeople:
11     school = 'oldboy'
12 
13     def __init__(self, name, age, sex):
14         self.name = name
15         self.age = age
16         self.sex = sex
17 
18 class OldboyTeacher(OldboyPeople):
19     def __init__(self,name,age,sex,level,salary):
20         super().__init__(name,age,sex)
21         self.level=level
22         self.salary=salary
23 
24     def change_score(self):
25         print('teacher %s is changing score' %self.name)
26 
27 class Oldboystudent(OldboyPeople):
28     def __init__(self,name,age,sex,course,):
29         super().__init__(name,age,sex,)
30         self.course=course
31 
32     def choose(self):
33         print('student %s choose course' %self.name)
34 
35 
36 tea1=OldboyTeacher('egon',18,'male',9,3.1)
37 date_obj=Date(2000,1,1)
38 # date_obj.tell_birth()
39 
40 tea1.birth=date_obj
41 # print(tea1.birth)
42 # tea1.birth.tell_birth()
43 # tea1.change_score()
44 
45 stu1=Oldboystudent('張三',16,'male','linux')
46 stu1.birth=Date(2002,3,3)
47 stu1.birth.tell_birth()

二,組合練習:

 1 class OldboyPeople:
 2     school = 'oldboy'
 3 
 4     def __init__(self, name, age, sex,):
 5         self.name = name
 6         self.age = age
 7         self.sex = sex
 8 
 9 class OldboyTeacher(OldboyPeople):
10     def __init__(self,name,age,sex,level,salary):
11         super().__init__(name,age,sex)
12         self.level=level
13         self.salary=salary
14 
15         self.courses=[]
16 
17     def change_score(self):
18         print('teacher %s is changing score' %self.name)
19 
20     def tell_course_info(self):
21         print(('老師%s 教授的課程信息如下' %self.name).center(50,'='))
22         for course_obj in self.courses:
23             course_obj.info()
24 
25 
26 class Oldboystudent(OldboyPeople):
27     def __init__(self,name,age,sex):
28         super().__init__(name,age,sex,)
29         self.courses=[]
30 
31     def choose(self):
32         print('student %s choose course' %self.name)
33 
34     def tell_course_info(self):
35         print(('學生%s 學習的課程信息如下' % self.name).center(50, '='))
36         for course_obj in self.courses:
37             course_obj.info()
38 
39 class Course:
40     def __init__(self,cname,period,price):
41         self.cname=cname
42         self.period=period
43         self.price=price
44 
45     def info(self):
46         print('課程信息<名字:%s 周期:%s  價錢:%s>' %(self.cname,self.period,self.price))
47 
48 
49 tea1=OldboyTeacher('egon',18,'male',9,3.1)
50 stu1=Oldboystudent('張三',16,'male')
51 
52 python=Course('Python全棧開發','5mons',3000)
53 linux=Course('Linux高級架構師','5mons',2000)
54 go=Course('Go開發工程師','3mons',1000)
55 
56 
57 # # 給老師添加課程
58 # tea1.courses.append(python)
59 # tea1.courses.append(linux)
60 
61 # print(tea1.courses)
62 # tea1.courses[0].info()
63 # for course_obj in tea1.courses:
64 #     course_obj.info()
65 
66 # tea1.tell_course_info()
67 
68 
69 # 給學生添加課程
70 stu1.courses.append(python)
71 stu1.courses.append(go)
72 stu1.courses.append(linux)
73 stu1.tell_course_info()

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、首先在頁面中加入jquery庫文件和qrcode插件。 ? 1 2 <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.qrcode.min.js" ...
  • 目前主流瀏覽器的相容性做的都比較好了,本文主要針對IE6,7的不相容問題進行解決。 1.圓盤時鐘有浮動存在時,計算一定要精確,不要讓內容的寬高超出我們所設置的寬高,IE6下,內容會撐開設置好的高度。 解決方法:給對應的父級加overflow:hidden;但是會有部分被隱藏掉,最好是精確計算寬高再設 ...
  • 點擊複製到剪切板,相容性很好,可以自定義樣式,加以美化。 ...
  • 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Bootstrap3級聯多選下拉框</title> 5 <meta charset="utf-8"> 6 <link rel="stylesheet" href="F:/webClient/bootstrap- ...
  • jQuery動畫 1.hide([speed,[easing],[fn]]) 方法:隱藏顯示的元素 參數: ①speed[,fn] speed:三種預定速度之一的字元串("slow","normal", or "fast")或表示動畫時長的毫秒數值(如:1000) fn:在動畫完成時執行的函數,每個 ...
  • transition屬性目的是讓css的一些屬性(如background)的以平滑過渡的效果出現。它是一個合併屬性,是由以下四個屬性組合而成: transition-property:設置應用過渡的CSS屬性,如background。 transition-duration:設置過渡效果花費的時間。 ...
  • CSS3圓角#css3-circle{ width: 150px; height: 150px; border-radius: 50%; }CSS3 橢圓形css3 radius#css3-elipse{ width: 200px; height: 100px; border-radius: 50% ...
  • 一、程式設計思路 在我的三次作業中都採用了類的分層結構,採用逐項匹配,分層求導的思路。 (一)、 第一次作業中構建了Polynimial(多項式)類,在類的構造器中就完成了對非法空格的判斷並對合法表達式進行刪除空格處理。由於第一次作業僅含有帶有繫數的冪函數與常數項,因而我就沒有專門構建針對每一個項的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...