国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺聊Python class中的@staticmethod以及@classmethod

baoxl / 3486人閱讀

摘要:然而,作為學(xué)生代表的我,絕對不允許老師混入進(jìn)來充當(dāng)間諜。而且,該方法由所獨(dú)享,并不需要判斷是否為學(xué)生。由此,改進(jìn)為以下版本。得到如下測試代碼而對于教學(xué)分類的判斷,則有以下兩種情形。

前言

入學(xué)不久之后,我就在想,對于學(xué)校的這么多人,這么多教師,這么多學(xué)生,以及其他種種事物,能否對應(yīng)的做一套"系統(tǒng)"下來呢?
隨之也跟著思考了起來。

設(shè)計(jì)

好了,最直觀的映入大腦的就是三個(gè)實(shí)體:
、教師、學(xué)生
這三個(gè)實(shí)體分別有對應(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é)生代表的我,絕對不允許老師混入進(jìn)來充當(dāng)間諜。所以,必須給學(xué)生類提供一個(gè)方法以判斷是否為學(xué)生。那么,對于這個(gè)方法,僅需要從Student類去調(diào)用即可,并非一定需要實(shí)例化的對象。而且,該方法由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í)候,一位代課老師過來看到了我的大概設(shè)計(jì),然后說,“同學(xué)啊,你介個(gè)設(shè)計(jì)呢,對于我們老師,少了點(diǎn)東西,作為老師,我們有分文理,文理之后還有數(shù)學(xué)...blah..blah..”。
然后我就走神了,對啊,老師還根據(jù)教學(xué)科目分文理呢,有數(shù)學(xué)老師,有音樂老師,有...

class MathTeacher(Teacher):

    TEACHING = "MATH"
    
    def __init__(self):
        pass

class DrawingTeacher(Teacher):

    TEACHING = "DRAWING"
    
    def __init__(self):
        pass        

所以以上為代表的兩個(gè)類就誕生了。至于對于文理的判斷,短暫的思考之后,決定把該功能添加到Teacher類做以判斷。

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"
測試

在完成以上初步構(gòu)想之后,決定測試一下所寫代碼是否能按預(yù)期執(zhí)行。
得到如下測試代碼

p = Person()
t = Teacher()
s = Student()

print(Student.is_student(p))    #False
print(Student.is_student(t))    #False
print(Student.is_student(s))    #True

而對于教學(xué)分類的判斷,則有以下兩種情形。

判斷某個(gè)教師 屬于哪個(gè)教學(xué)分類

print(DrawingTeacher.category())    #Arts
print(MathTeacher.category())       #Science
print(Teacher.category())           #Unknow

判斷某個(gè)教師 實(shí)例 屬于哪個(gè)教學(xué)分類

teacher_wang = DrawingTeacher()
teacher_li = MathTeacher()
teacher = Teacher()

print(teacher_wang.category())    #Arts
print(teacher_li.category())      #Science
print(teacher.category())         #Unknow
結(jié)束

到此時(shí),再回過頭一看,噗,什么狗屁設(shè)計(jì)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37639.html

相關(guān)文章

  • classmethod&staticmethod 以及 __slots__

    摘要:什么是中的它的用途是什么裝飾器對應(yīng)的函數(shù)不需要實(shí)例化,不需要參數(shù),但第一個(gè)參數(shù)需要是表示自身類的參數(shù),可以來調(diào)用類的屬性,類的方法,實(shí)例化對象等。 什么是python中的classmethod,它的用途是什么? classmethod裝飾器對應(yīng)的函數(shù)不需要實(shí)例化,不需要 self 參數(shù),但第一個(gè)參數(shù)需要是表示自身類的 cls 參數(shù),可以來調(diào)用類的屬性,類的方法,實(shí)例化對象等。 cl...

    newsning 評論0 收藏0
  • 90 % 的 Python 開發(fā)者不知道的描述符應(yīng)用

    摘要:由上面的注釋,可以看出其實(shí)就相當(dāng)于一個(gè)描述符類,而在此刻變成了一個(gè)描述符。調(diào)用這個(gè)方法可以知道,每調(diào)用一次,它都會經(jīng)過描述符類的。基于描述符如何實(shí)現(xiàn)同樣的也是一樣。我想你應(yīng)該對描述符在中的應(yīng)用有了更深的理解。好吧,我承認(rèn)我標(biāo)題黨了。但是這篇文章的知識點(diǎn),你有極大的可能并不知道。 前段時(shí)間,我寫了一篇描述符的入門級文章,從那些文章里你知道了如何定義描述符,且明白了描述符是如何工作的。 如果你還...

    番茄西紅柿 評論0 收藏0
  • 90 % 的 Python 開發(fā)者不知道的描述符應(yīng)用

    摘要:由上面的注釋,可以看出其實(shí)就相當(dāng)于一個(gè)描述符類,而在此刻變成了一個(gè)描述符。調(diào)用這個(gè)方法可以知道,每調(diào)用一次,它都會經(jīng)過描述符類的。基于描述符如何實(shí)現(xiàn)同樣的也是一樣。我想你應(yīng)該對描述符在中的應(yīng)用有了更深的理解。好吧,我承認(rèn)我標(biāo)題黨了。但是這篇文章的知識點(diǎn),你有極大的可能并不知道。 前段時(shí)間,我寫了一篇描述符的入門級文章,從那些文章里你知道了如何定義描述符,且明白了描述符是如何工作的。 如果你還...

    0x584a 評論0 收藏0
  • python classmethod 與 staticmethod 小談

    摘要:而類的實(shí)例并不會影響類的靜態(tài)變量,只是會修改對象實(shí)例本身的值,所以后面兩個(gè)的結(jié)果總是同樣,如果我們使用和結(jié)果也將僅僅是靜態(tài)變量變化后的結(jié)果,與類的實(shí)例無關(guān)以上是對和的暫時(shí)做的了解的總結(jié),如有紕漏,請及時(shí)指正 概念 python 的classmethod 與staticmethod 這兩個(gè)有什么區(qū)別? 二者又有什么聯(lián)系?在google和baidu之后, 得到的大致的聯(lián)系就是二者都是對類的...

    keke 評論0 收藏0
  • PyTips 0x14 - Python 描述符

    摘要:項(xiàng)目地址本篇主要關(guān)于三個(gè)常用內(nèi)置方法,,在語言的設(shè)計(jì)中,通常的語法操作最終都會轉(zhuǎn)化為方法調(diào)用,例如相當(dāng)于中的描述符就是將對象屬性的獲取賦值以及刪除等行為轉(zhuǎn)換為方法調(diào)用的協(xié)議例如我們要獲取一個(gè)對象的屬性,可以通過的方式取得而通過的 項(xiàng)目地址:https://git.io/pytips 本篇主要關(guān)于三個(gè)常用內(nèi)置方法:property(),staticmethod(),classmethod...

    since1986 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<