Python 基礎教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對象和類

Python 日期和時間

Python 高級知識

Python 參考手冊

Python staticmethod() 使用方法及示例

Python 內(nèi)置函數(shù)

staticmethod()內(nèi)置函數(shù)為給定函數(shù)返回靜態(tài)方法。

staticmethod()的語法為:

staticmethod(function)

使用staticmethod()被認為是創(chuàng)建靜態(tài)函數(shù)的非Python標準方式。

因此,在較新版本的Python中,您可以使用@staticmethod裝飾器。

@staticmethod的語法為:

@staticmethod
def func(args, ...)

staticmethod()參數(shù)

staticmethod()方法采用單個參數(shù):

  • function -需要轉換為靜態(tài)方法的函數(shù)

staticmethod()返回值

staticmethod()對于作為參數(shù)傳遞的函數(shù),返回靜態(tài)方法。

什么是靜態(tài)方法?

靜態(tài)方法與類方法非常相似,是綁定到類而不是對象的方法。

他們不需要創(chuàng)建類實例。因此,它們不依賴于對象的狀態(tài)。

靜態(tài)方法和類方法之間的區(qū)別是:

  • 靜態(tài)方法對類一無所知,只處理參數(shù)。

  • 類方法與類一起使用,因為其參數(shù)始終是類本身。

可以通過類及其對象來調(diào)用它們。

Class.staticmethodFunc()
or even
Class().staticmethodFunc()

示例1:使用staticmethod()創(chuàng)建一個靜態(tài)方法

class Mathematics:

    def addNumbers(x, y):
        return x + y

# 創(chuàng)建addNumbers靜態(tài)方法
Mathematics.addNumbers = staticmethod(Mathematics.addNumbers)

print('總數(shù)是:', Mathematics.addNumbers(5, 10))

輸出結果

總數(shù)是: 15

什么時候使用靜態(tài)方法?

1.將實用程序功能分組到一個類

靜態(tài)方法的有使用限制,因為與類方法或類中的任何其他方法一樣,靜態(tài)方法無法訪問類本身的屬性。

但是,當您需要一個不訪問類的任何屬性但知道它屬于該類的實用程序函數(shù)時,我們將使用靜態(tài)函數(shù)。

示例2:將實用程序功能創(chuàng)建為靜態(tài)方法

class Dates:
    def __init__(self, date):
        self.date = date
        
    def getDate(self):
        return self.date

    @staticmethod
    def toDashDate(date):
        return date.replace("/", "-")

date = Dates("15-12-2016")
dateFromDB = "15/12/2016"
dateWithDash = Dates.toDashDate(dateFromDB)

if(date.getDate() == dateWithDash):
    print("Equal")
else:
    print("Unequal")

輸出結果

Equal

在這里,我們有一個Dates僅適用于帶破折號(-)的日期的類。但是,在我們以前的數(shù)據(jù)庫中,所有日期都以斜杠表示。

為了將斜線日期轉換為帶破折號(-)日期,我們創(chuàng)建了一個效用函數(shù)toDashDate中Dates。

這是靜態(tài)方法,因為它不需要訪問Dates自身的任何屬性,而只需要參數(shù)。

我們也可以在toDashDate類外創(chuàng)建,但是由于它僅適用于日期,因此將其保留在Dates類內(nèi)是合乎邏輯的。

2.單一實施

當我們不希望類的子類更改/重寫方法的特定實現(xiàn)時,可以使用靜態(tài)方法。

示例3:繼承如何與靜態(tài)方法一起工作?

class Dates:
    def __init__(self, date):
        self.date = date
        
    def getDate(self):
        return self.date

    @staticmethod
    def toDashDate(date):
        return date.replace("/", "-")

class DatesWithSlashes(Dates):
    def getDate(self):
        return Dates.toDashDate(self.date)

date = Dates("15-12-2016")
dateFromDB = DatesWithSlashes("15/12/2016")

if(date.getDate() == dateFromDB.getDate()):
    print("Equal")
else:
    print("Unequal")

輸出結果

Equal

在這里,我們不希望DatesWithSlashes子類覆蓋靜態(tài)實用程序方法toDashDate,因為它只有一個用途,即將date更改為dash-date。

通過重寫getDate()子類中的方法,我們可以輕松地利用靜態(tài)方法來發(fā)揮自己的優(yōu)勢,從而使其與DatesWithSlashes類一起正常工作。

Python 內(nèi)置函數(shù)

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清