av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Python類方法裝飾器@classmethod

在 Python 中,@classmethod裝飾器用于將類中的一個(gè)方法聲明為可以使用ClassName.MethodName()調(diào)用的類方法。 類方法也可以使用類的對(duì)象來(lái)調(diào)用。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括珠海網(wǎng)站建設(shè)、珠海網(wǎng)站制作、珠海網(wǎng)頁(yè)制作以及珠海網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,珠海網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到珠海省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

@classmethod是 classmethod() 函數(shù)的替代函數(shù)。建議使用@classmethod修飾器代替函數(shù),因?yàn)樗皇且粋€(gè)語(yǔ)法糖。

@classmethod 特性

  • 聲明一個(gè)類方法。
  • 第一個(gè)參數(shù)必須是cls,可以用來(lái)訪問(wèn)類屬性。
  • 類方法只能訪問(wèn)類屬性,而不能訪問(wèn)實(shí)例屬性。
  • 可以使用ClassName.MethodName()和對(duì)象調(diào)用類方法。
  • 它可以返回類的對(duì)象。

下面的示例聲明了一個(gè)類方法。

Example: @classmethod

class Student:
    name = 'unknown' # class attribute
    def __init__(self):
        self.age = 20  # instance attribute

    @classmethod
    def tostring(cls):
        print('Student Class Attributes: name=',cls.name) 

上圖中,Student類包含一個(gè)類屬性name和一個(gè)實(shí)例屬性agetostring()方法用@classmethod裝飾器裝飾,使其成為類方法,可以使用Student.tostring()調(diào)用。 注意,任何類方法的第一個(gè)參數(shù)必須是cls,可以用來(lái)訪問(wèn)類的屬性。您可以給第一個(gè)參數(shù)起任何名字,而不是cls。

現(xiàn)在,您可以使用類方法,如下所示。

Example: Access Class Method

>>> Student.tostring()
Student Class Attributes: name=unknown 

但是,也可以使用對(duì)象調(diào)用相同的方法。

Example: Calling Class Method using Object

>>> std = Student()
>>> std.tostring() 
Student Class Attributes: name=unknown
>>> Student().tostring() 
Student Class Attributes: name=unknown 

類方法只能訪問(wèn)類屬性,而不能訪問(wèn)實(shí)例屬性。如果試圖訪問(wèn)類方法中的實(shí)例屬性,將會(huì)引發(fā)錯(cuò)誤。

Example: @classmethod

class Student:
    name = 'unknown' # class attribute
    def __init__(self):
        self.age = 20  # instance attribute

    @classmethod
    def tostring(cls):
        print('Student Class Attributes: name=',cls.name,', age=', cls.age) 

Example: Access Class Method

>>> Student.tostring()
Traceback (most recent call last):
  File "", line 1, in 
    Student.tostring()
  File "", line 7, in display
    print('Student Class Attributes: name=',cls.name,', age=', cls.age)
AttributeError: type object 'Student' has no attribute 'age' 

類方法也可以用作工廠方法來(lái)獲取類的對(duì)象,如下所示。

Example: @classmethod

class Student:

    def __init__(self, name, age):
        self.name = name  # instance attribute
        self.age = age # instance attribute

    @classmethod
    def getobject(cls):
        return cls('Steve', 25) 

下面調(diào)用類方法來(lái)獲取對(duì)象。

Example: Class Method as Factory Method

>>> std = Student.getobject()
>>> std.name
'Steve'    
>>> std.age
25 

@classmethod vs @staticmethod

下表列出了類方法和靜態(tài)方法的區(qū)別:

@classmethod @staticmethod
聲明一個(gè)類方法。聲明一個(gè)靜態(tài)方法。
它可以訪問(wèn)類屬性,但不能訪問(wèn)實(shí)例屬性。它不能訪問(wèn)類屬性或?qū)嵗龑傩浴?/td>
可以使用ClassName.MethodName()object.MethodName()來(lái)調(diào)用。可以使用ClassName.MethodName()object.MethodName()來(lái)調(diào)用。
它可以用來(lái)聲明返回類對(duì)象的工廠方法。它不能返回類的對(duì)象。

當(dāng)前題目:Python類方法裝飾器@classmethod
標(biāo)題來(lái)源:http://uogjgqi.cn/article/djjoeop.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流