日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python類方法裝飾器@classmethod

在 Python 中,@classmethod裝飾器用于將類中的一個方法聲明為可以使用ClassName.MethodName()調用的類方法。 類方法也可以使用類的對象來調用。

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

@classmethod是 classmethod() 函數(shù)的替代函數(shù)。建議使用@classmethod修飾器代替函數(shù),因為它只是一個語法糖。

@classmethod 特性

  • 聲明一個類方法。
  • 第一個參數(shù)必須是cls,可以用來訪問類屬性。
  • 類方法只能訪問類屬性,而不能訪問實例屬性。
  • 可以使用ClassName.MethodName()和對象調用類方法。
  • 它可以返回類的對象。

下面的示例聲明了一個類方法。

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類包含一個類屬性name和一個實例屬性age。 tostring()方法用@classmethod裝飾器裝飾,使其成為類方法,可以使用Student.tostring()調用。 注意,任何類方法的第一個參數(shù)必須是cls,可以用來訪問類的屬性。您可以給第一個參數(shù)起任何名字,而不是cls。

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

Example: Access Class Method

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

但是,也可以使用對象調用相同的方法。

Example: Calling Class Method using Object

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

類方法只能訪問類屬性,而不能訪問實例屬性。如果試圖訪問類方法中的實例屬性,將會引發(fā)錯誤。

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' 

類方法也可以用作工廠方法來獲取類的對象,如下所示。

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) 

下面調用類方法來獲取對象。

Example: Class Method as Factory Method

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

@classmethod vs @staticmethod

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

@classmethod @staticmethod
聲明一個類方法。聲明一個靜態(tài)方法。
它可以訪問類屬性,但不能訪問實例屬性。它不能訪問類屬性或實例屬性。
可以使用ClassName.MethodName()object.MethodName()來調用。可以使用ClassName.MethodName()object.MethodName()來調用。
它可以用來聲明返回類對象的工廠方法。它不能返回類的對象。

文章名稱:Python類方法裝飾器@classmethod
網(wǎng)站鏈接:http://www.dlmjj.cn/article/djjoeop.html