首頁 後端開發 Python教學 裝飾器@staticmethod和@classmethod有什麼差別

裝飾器@staticmethod和@classmethod有什麼差別

May 24, 2019 pm 02:58 PM
裝飾器

裝飾器@staticmethod和@classmethod的差異是:@staticmethod不需要self和cls參數,@classmethod不需要self參數,但需要cls參數。

裝飾器@staticmethod和@classmethod有什麼差別

通常來說,我們使用一個類別的方法時,首先要實例化這個類,再用實例化的類別來呼叫其方法

class Test(object):
    """docstring for Test"""
    def __init__(self, arg=None):
        super(Test, self).__init__()
        self.arg = arg
    def say_hi(self):
        print 'hello wrold'
def main():
    test = Test() //1. 首先实例化test类
    test.say_hi() //2. 再调用类的方法
if __name__ == '__main__':
    main()
登入後複製

而使用@staticmethod或@classmethod,就可以不需要實例化,直接類別名稱.方法名稱()來呼叫。

這有利於組織程式碼,把某些應該屬於某個類別的函數給放到那個類別裡去,同時有利於命名空間的整潔。

class Test(object):
    """docstring for Test"""
    def __init__(self, arg=None):
        super(Test, self).__init__()
        self.arg = arg
    def say_hi(self):
        print 'hello wrold'
    @staticmethod
    def say_bad():
        print 'say bad'
    @classmethod
    def say_good(cls):
        print 'say good'
def main():
    test = Test()
    test.say_hi()
    Test.say_bad() //直接类名.方法名()来调用
    Test.say_good() //直接类名.方法名()来调用
if __name__ == '__main__':
    main()
登入後複製

@staticmethod或@classmethod的區別

類別的普通方法,地一個參數需要self參數來表示自己。

@staticmethod不需要表示自身物件的self和自身類別的cls參數,就跟使用函數一樣。

@classmethod也不需要self參數,但第一個參數需要是表示自身類別的cls參數。

以上是裝飾器@staticmethod和@classmethod有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Python中的裝飾器和上下文管理器是如何運作的? Python中的裝飾器和上下文管理器是如何運作的? Oct 20, 2023 pm 07:04 PM

Python中的裝飾器和上下文管理器是如何運作的?在Python中,裝飾器和上下文管理器是兩個非常有用的概念和功能。它們都是為了簡化程式碼、增加程式碼可讀性以及方便程式碼的重複使用。一、裝飾器裝飾器是Python中一種用來修改函數的行為的特殊函數。它允許我們在不修改原始函數的情況下進行包裝或拓展。裝飾器在許多Python的框架和庫中被廣泛使用,例如Flask、Dj

手把手教你用裝飾器擴充 Python 計時器 手把手教你用裝飾器擴充 Python 計時器 Apr 13, 2023 pm 08:46 PM

這是我們手把手教你實現 Python 定時器的第三篇文章。前兩篇:分別是手把手教你實作一個 Python 計時器,和用上下文管理器擴展 Python 計時器,使得我們的 Timer 類別方便用、美觀實用。但我們並不滿足於此,仍然有一個用例可以進一步簡化它。假設我們需要追蹤程式碼庫中一個給定函數所花費的時間。使用上下文管理器,基本上有兩種不同的選擇:1. 每次呼叫函數時使用 Timer:with Timer("some_name"): do_something() 當我們在一

使用上下文裝飾器調試Pytorch的記憶體洩漏問題 使用上下文裝飾器調試Pytorch的記憶體洩漏問題 Apr 10, 2023 am 11:31 AM

裝飾器是 python 上下文管理器的特定實作。本片文章將透過一個pytorch GPU 偵錯的範例來說明如何使用它們。雖然它可能不適用於所有情況,但我它們卻非常有用。調試記憶體洩漏問題有很多方法可以調試記憶體洩漏。本文將展示一種識別程式碼中有問題的行的有用方法。此方法可以有助於以簡潔的方式找到具體的位置。逐行手動調試如果遇到問題,一種經典的且常用的方法是使用調試器逐行檢查,例如下面的例子:在搜尋引擎中查找有關如何計算pytorch 中所有張量總數的程式碼片段,例如:tensor -counter-s

Python程式設計:裝飾器之有關函數的再認知 Python程式設計:裝飾器之有關函數的再認知 May 27, 2023 pm 03:57 PM

裝飾器(Decorators)是Python中非常有用的工具。裝飾器是以另一個函數為參數並擴展其功能而不明確修改它的函數。它允許我們修改函數或類別的行為而不涉及其原始程式碼。換句話說,裝飾器包裝一個函數是為了擴展它的行為,而不是永久修改它。從這篇開始,就來研究下裝飾器是啥以及是如何在Python中運作的。 1.1關於函數為了理解裝飾器是如何運作的,我們需要重新回顧Python中關於函數的一些重要概念。時時刻刻意識到,在Python中,函數(function)的地位是一等公民,所以下面幾個觀念要牢記:ü函

Python程式設計:如何實作類別裝飾器及應用?要點要掌握 Python程式設計:如何實作類別裝飾器及應用?要點要掌握 Apr 12, 2023 pm 05:25 PM

範例Python中的裝飾器既可以是函數也可以是類別。在前幾節中,我們使用的是函數裝飾器。現在,我們將學習如何定義類別裝飾器。我們將定義充當裝飾器的自訂類別。當用類別裝飾/修飾函數時,函數就成為該類別的實例。讓我們來一探究竟:如上所示,我們創建了一個簡單的類別裝飾器。任何類別要成為裝飾器,都需要實作__call__()方法。 __call__()方法的功能與函數裝飾器中的包裝器函數相同。現在讓我們用這個類別來裝飾一個函數:運行程式輸出結果如下:帶有*args和**kwargs參數的類別裝飾器為了讓類別裝飾器使用參數用

一文讀懂 Python 裝飾器 一文讀懂 Python 裝飾器 Apr 12, 2023 pm 09:40 PM

Python 是一種對新手很友善的語言。但是,它也有很多較難掌握的高級功能,例如裝飾器(decorator)。許多初學者一直不理解裝飾器及其工作原理,在這篇文章中,我們將介紹裝飾器的來龍去脈。在 Python 中,函數是一種非常靈活的結構,我們可以把它賦值給變數、當作參數傳遞給另一個函數,或是當成某個函數的輸出。裝飾器本質上也是一種函數,它可以讓它函數在不經過修改的情況下增加一些功能。這也就是「裝飾」的意義,這種「裝飾」本身代表著一種功能,如果用它來修飾不同的函數,那就是為這些函數增加這種功

Python中裝飾器的常見問題及解決方案 Python中裝飾器的常見問題及解決方案 Oct 10, 2023 am 11:58 AM

Python中裝飾器的常見問題及解決方案什麼是裝飾器?裝飾器是Python中一種非常強大的功能,可以用來修改已有函數或類別的行為,而無需修改其原始碼。裝飾器實際上是個函數或類,它接受一個函數或類別作為參數,然後傳回一個新的函數或類別。如何寫一個簡單的裝飾器?下面是一個簡單的裝飾器範例:defdecorator(func):definner_func

Python裝飾器的理解及應用方式 Python裝飾器的理解及應用方式 May 08, 2023 am 08:10 AM

裝飾器(decorator)是一種高級Python語法。可以對一個函數、方法或類別進行加工。在Python中,我們有多種方法對函數和類別進行加工,相對於其它方式,裝飾器語法簡單,程式碼可讀性高。因此,裝飾器在Python專案中有廣泛的應用。修飾器常被用於有切面需求的場景,較為經典的有插入日誌、效能測試、事務處理,Web權限校驗,Cache等。裝飾器的優點是能夠抽離出大量函數中與函數功能本身無關的雷同程式碼並繼續重複使用。即,可以將函數「修飾」為完全不同的行為,可以有效的將業務邏輯正交分解。概括的講,裝飾

See all articles