摘要:然而,作為學(xué)生代表的我,絕對(duì)不允許老師混入進(jìn)來(lái)充當(dāng)間諜。而且,該方法由所獨(dú)享,并不需要判斷是否為學(xué)生。由此,改進(jìn)為以下版本。得到如下測(cè)試代碼而對(duì)于教學(xué)分類(lèi)的判斷,則有以下兩種情形。
前言
入學(xué)不久之后,我就在想,對(duì)于學(xué)校的這么多人,這么多教師,這么多學(xué)生,以及其他種種事物,能否對(duì)應(yīng)的做一套"系統(tǒng)"下來(lái)呢?
隨之也跟著思考了起來(lái)。
好了,最直觀(guān)的映入大腦的就是三個(gè)實(shí)體:
人、教師、學(xué)生。
這三個(gè)實(shí)體分別有對(duì)應(yīng)的feature屬性以表示其為人/教師/學(xué)生。
由此,得到以下三個(gè)class。
class Person(): FEATURE = "P" def __init__(self): pass class Teacher(Person): FEATURE = "T" def __init__(self): pass class Student(Person): FEATURE = "S" def __init__(self): pass
然而,作為學(xué)生代表的我,絕對(duì)不允許老師混入進(jìn)來(lái)充當(dāng)間諜。所以,必須給學(xué)生類(lèi)提供一個(gè)方法以判斷是否為學(xué)生。那么,對(duì)于這個(gè)方法,僅需要從Student類(lèi)去調(diào)用即可,并非一定需要實(shí)例化的對(duì)象。而且,該方法由Student所獨(dú)享,Teacher并不需要判斷是否為學(xué)生。由此,Student改進(jìn)為以下版本。
class Student(Person): FEATURE = "S" def __init__(self): pass @staticmethod def is_student(obj): if obj.FEATURE == "S": return True else: return False
正在思考的時(shí)候,一位代課老師過(guò)來(lái)看到了我的大概設(shè)計(jì),然后說(shuō),“同學(xué)啊,你介個(gè)設(shè)計(jì)呢,對(duì)于我們老師,少了點(diǎn)東西,作為老師,我們有分文理,文理之后還有數(shù)學(xué)...blah..blah..”。
然后我就走神了,對(duì)啊,老師還根據(jù)教學(xué)科目分文理呢,有數(shù)學(xué)老師,有音樂(lè)老師,有...
class MathTeacher(Teacher): TEACHING = "MATH" def __init__(self): pass class DrawingTeacher(Teacher): TEACHING = "DRAWING" def __init__(self): pass
所以以上為代表的兩個(gè)類(lèi)就誕生了。至于對(duì)于文理的判斷,短暫的思考之后,決定把該功能添加到Teacher類(lèi)做以判斷。
class Teacher(Person): FEATURE = "T" def __init__(self): pass @classmethod def category(cls): science_cate = ["MATH"] arts_cate = ["DRAWING", "PAINTING"] teaching = getattr(cls, "TEACHING", None) if teaching in science_cate: return "Science" elif teaching in arts_cate: return "Arts" else: return "Unknow"測(cè)試
在完成以上初步構(gòu)想之后,決定測(cè)試一下所寫(xiě)代碼是否能按預(yù)期執(zhí)行。
得到如下測(cè)試代碼
p = Person() t = Teacher() s = Student() print(Student.is_student(p)) #False print(Student.is_student(t)) #False print(Student.is_student(s)) #True
而對(duì)于教學(xué)分類(lèi)的判斷,則有以下兩種情形。
判斷某個(gè)教師 類(lèi) 屬于哪個(gè)教學(xué)分類(lèi)
print(DrawingTeacher.category()) #Arts print(MathTeacher.category()) #Science print(Teacher.category()) #Unknow
判斷某個(gè)教師 實(shí)例 屬于哪個(gè)教學(xué)分類(lèi)
teacher_wang = DrawingTeacher() teacher_li = MathTeacher() teacher = Teacher() print(teacher_wang.category()) #Arts print(teacher_li.category()) #Science print(teacher.category()) #Unknow結(jié)束
到此時(shí),再回過(guò)頭一看,噗,什么狗屁設(shè)計(jì)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/37639.html
摘要:什么是中的它的用途是什么裝飾器對(duì)應(yīng)的函數(shù)不需要實(shí)例化,不需要參數(shù),但第一個(gè)參數(shù)需要是表示自身類(lèi)的參數(shù),可以來(lái)調(diào)用類(lèi)的屬性,類(lèi)的方法,實(shí)例化對(duì)象等。 什么是python中的classmethod,它的用途是什么? classmethod裝飾器對(duì)應(yīng)的函數(shù)不需要實(shí)例化,不需要 self 參數(shù),但第一個(gè)參數(shù)需要是表示自身類(lèi)的 cls 參數(shù),可以來(lái)調(diào)用類(lèi)的屬性,類(lèi)的方法,實(shí)例化對(duì)象等。 cl...
摘要:由上面的注釋?zhuān)梢钥闯銎鋵?shí)就相當(dāng)于一個(gè)描述符類(lèi),而在此刻變成了一個(gè)描述符。調(diào)用這個(gè)方法可以知道,每調(diào)用一次,它都會(huì)經(jīng)過(guò)描述符類(lèi)的?;诿枋龇绾螌?shí)現(xiàn)同樣的也是一樣。我想你應(yīng)該對(duì)描述符在中的應(yīng)用有了更深的理解。好吧,我承認(rèn)我標(biāo)題黨了。但是這篇文章的知識(shí)點(diǎn),你有極大的可能并不知道。 前段時(shí)間,我寫(xiě)了一篇描述符的入門(mén)級(jí)文章,從那些文章里你知道了如何定義描述符,且明白了描述符是如何工作的。 如果你還...
摘要:由上面的注釋?zhuān)梢钥闯銎鋵?shí)就相當(dāng)于一個(gè)描述符類(lèi),而在此刻變成了一個(gè)描述符。調(diào)用這個(gè)方法可以知道,每調(diào)用一次,它都會(huì)經(jīng)過(guò)描述符類(lèi)的。基于描述符如何實(shí)現(xiàn)同樣的也是一樣。我想你應(yīng)該對(duì)描述符在中的應(yīng)用有了更深的理解。好吧,我承認(rèn)我標(biāo)題黨了。但是這篇文章的知識(shí)點(diǎn),你有極大的可能并不知道。 前段時(shí)間,我寫(xiě)了一篇描述符的入門(mén)級(jí)文章,從那些文章里你知道了如何定義描述符,且明白了描述符是如何工作的。 如果你還...
摘要:而類(lèi)的實(shí)例并不會(huì)影響類(lèi)的靜態(tài)變量,只是會(huì)修改對(duì)象實(shí)例本身的值,所以后面兩個(gè)的結(jié)果總是同樣,如果我們使用和結(jié)果也將僅僅是靜態(tài)變量變化后的結(jié)果,與類(lèi)的實(shí)例無(wú)關(guān)以上是對(duì)和的暫時(shí)做的了解的總結(jié),如有紕漏,請(qǐng)及時(shí)指正 概念 python 的classmethod 與staticmethod 這兩個(gè)有什么區(qū)別? 二者又有什么聯(lián)系?在google和baidu之后, 得到的大致的聯(lián)系就是二者都是對(duì)類(lèi)的...
摘要:項(xiàng)目地址本篇主要關(guān)于三個(gè)常用內(nèi)置方法,,在語(yǔ)言的設(shè)計(jì)中,通常的語(yǔ)法操作最終都會(huì)轉(zhuǎn)化為方法調(diào)用,例如相當(dāng)于中的描述符就是將對(duì)象屬性的獲取賦值以及刪除等行為轉(zhuǎn)換為方法調(diào)用的協(xié)議例如我們要獲取一個(gè)對(duì)象的屬性,可以通過(guò)的方式取得而通過(guò)的 項(xiàng)目地址:https://git.io/pytips 本篇主要關(guān)于三個(gè)常用內(nèi)置方法:property(),staticmethod(),classmethod...
閱讀 3051·2021-10-20 13:46
閱讀 2573·2021-08-12 13:22
閱讀 2750·2019-08-30 15:54
閱讀 2383·2019-08-30 15:53
閱讀 604·2019-08-30 13:47
閱讀 3631·2019-08-23 16:56
閱讀 1780·2019-08-23 13:02
閱讀 1846·2019-08-23 12:25