欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?class類(lèi)@staticmethod及@classmethod區(qū)別淺析

 更新時(shí)間:2023年07月25日 16:45:46   作者:xxxxxxxx  
這篇文章主要為大家介紹了Python?class類(lèi)@staticmethod及@classmethod區(qū)別淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

入學(xué)不久之后,我就在想,對(duì)于學(xué)校的這么多人,這么多教師,這么多學(xué)生,以及其他種種事物,能否對(duì)應(yīng)的做一套"系統(tǒng)"下來(lái)呢?

隨之也跟著思考了起來(lái)。

設(shè)計(jì)

好了,最直觀的映入大腦的就是三個(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

以上就是Python class類(lèi)@staticmethod及@classmethod區(qū)別淺析的詳細(xì)內(nèi)容,更多關(guān)于Python staticmethod classmethod的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python drf各類(lèi)組件的用法和作用

    python drf各類(lèi)組件的用法和作用

    這篇文章主要介紹了python drf各類(lèi)組件的用法和作用,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2021-01-01
  • python統(tǒng)計(jì)字符串中指定字符出現(xiàn)次數(shù)的方法

    python統(tǒng)計(jì)字符串中指定字符出現(xiàn)次數(shù)的方法

    這篇文章主要介紹了python統(tǒng)計(jì)字符串中指定字符出現(xiàn)次數(shù)的方法,涉及Python中count函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • python政策網(wǎng)字體反爬實(shí)例(附完整代碼)

    python政策網(wǎng)字體反爬實(shí)例(附完整代碼)

    大家好,本篇文章主要講的是python政策網(wǎng)字體反爬實(shí)例(附完整代碼),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Python入門(mén)篇之字典

    Python入門(mén)篇之字典

    在元組和列表中,都是通過(guò)編號(hào)進(jìn)行元素的訪問(wèn),但有的時(shí)候我們按名字進(jìn)行數(shù)據(jù)甚至數(shù)據(jù)結(jié)構(gòu)的訪問(wèn),在python中也提供了內(nèi)置的映射類(lèi)型--字典。映射其實(shí)就是一組key和value以及之間的映射函數(shù),其特點(diǎn)是:key的唯一性、key與value的一對(duì)多的映射。
    2014-10-10
  • 淺談PyTorch的數(shù)據(jù)讀取機(jī)制Dataloader與Dataset

    淺談PyTorch的數(shù)據(jù)讀取機(jī)制Dataloader與Dataset

    這篇文章主要介紹了淺談PyTorch的數(shù)據(jù)讀取機(jī)制Dataloader與Dataset,DataLoader的作用是構(gòu)建一個(gè)可迭代的數(shù)據(jù)裝載器,每次執(zhí)行循環(huán)的時(shí)候,就從中讀取一批Batchsize大小的樣本進(jìn)行訓(xùn)練,需要的朋友可以參考下
    2023-07-07
  • Python列表轉(zhuǎn)換為Excel表格第一列的方法詳解

    Python列表轉(zhuǎn)換為Excel表格第一列的方法詳解

    在數(shù)據(jù)處理和分析的過(guò)程中,我們經(jīng)常需要將Python中的數(shù)據(jù)結(jié)構(gòu)(如列表)導(dǎo)出到Excel表格中,本文為大家整理了Python列表轉(zhuǎn)換為Excel表格第一列的幾種方法,希望對(duì)大家有所幫助
    2024-11-11
  • 詳解python中的Turtle函數(shù)庫(kù)

    詳解python中的Turtle函數(shù)庫(kù)

    這篇文章主要介紹了python中的Turtle函數(shù)庫(kù),包括函數(shù)庫(kù)的引用方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 理解python中生成器用法

    理解python中生成器用法

    本篇文章給大家詳細(xì)介紹了python中的生成器用法以及原理,有興趣的朋友參考學(xué)習(xí)下吧。
    2017-12-12
  • python?Sweetviz探索性數(shù)據(jù)可視化分析庫(kù)使用特征詳解

    python?Sweetviz探索性數(shù)據(jù)可視化分析庫(kù)使用特征詳解

    這篇文章主要為大家介紹了python?Sweetviz探索性數(shù)據(jù)可視化分析庫(kù)特征使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作

    Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作

    這篇文章主要介紹了Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作,結(jié)合實(shí)例形式分析了同一個(gè)方法里面既有ORM又有自定義SQL 語(yǔ)句的情況下事務(wù)控制相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06

最新評(píng)論