日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括珠海網(wǎng)站建設(shè)、珠海網(wǎng)站制作、珠海網(wǎng)頁制作以及珠海網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(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)輻射到珠海省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

@classmethod 特性

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

下面的示例聲明了一個(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,可以用來訪問類的屬性。您可以給第一個(gè)參數(shù)起任何名字,而不是cls

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

Example: Access Class Method

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

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

Example: Calling Class Method using Object

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

類方法只能訪問類屬性,而不能訪問實(shí)例屬性。如果試圖訪問類方法中的實(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' 

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

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)用類方法來獲取對象。

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)方法。
它可以訪問類屬性,但不能訪問實(shí)例屬性。它不能訪問類屬性或?qū)嵗龑傩浴?/td>
可以使用ClassName.MethodName()object.MethodName()來調(diào)用。可以使用ClassName.MethodName()object.MethodName()來調(diào)用。
它可以用來聲明返回類對象的工廠方法。它不能返回類的對象。

分享題目:Python類方法裝飾器@classmethod
轉(zhuǎn)載來源:http://m.5511xx.com/article/djjoeop.html