欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年07月08日 14:20:52   作者:小公雞卡哇伊呀~  
這篇文章主要介紹了Python?類方法和靜態(tài)方法之間的區(qū)別,靜態(tài)方法并不是真正意義上的類方法,它只是一個(gè)被放到類里的函數(shù)而已,更多內(nèi)容需要的朋友可以參考一下

前言

類中不僅可以有 methods,還可以有變量,這些變量稱為類屬性,例如如下代碼中 Book 類的 TYPES 即為類屬性。

類中的方法分為3類:

1. 實(shí)例方法 instance method

不使用裝飾器
類中的所有方法,如果第一個(gè)參數(shù)是 self,就是 instance method, self 是創(chuàng)建的類實(shí)例,實(shí)例方法與實(shí)例即對(duì)象相關(guān)。
(self 可以改成別的名稱,但使用 self 是convention,self 是類實(shí)例, ),

2. 類方法 class method

使用 @classmethod 裝飾
類方法的第一個(gè)參數(shù)總是 cls。如果方法需要類的信息,用 @classmethod 對(duì)其進(jìn)行裝飾, 類方法經(jīng)常被用作 factory,例如如下代碼中的 hardcover 和 paperback 兩個(gè) class method 方法就是可用于創(chuàng)建對(duì)象的 factory。
(cls 可以改成別的名稱,但使用 cls 是convention)

3. 靜態(tài)方法 static method

使用 @staticmethod 裝飾

靜態(tài)方法并不是真正意義上的類方法,它只是一個(gè)被放到類里的函數(shù)而已。
盡管如此,仍然稱之為方法,但它沒(méi)有關(guān)于 class 或 object 的任何信息,所以它實(shí)際上是一個(gè)獨(dú)立的函數(shù),只是被放到了類里,靜態(tài)方法既沒(méi)有 self 也沒(méi)有 cls 參數(shù) 。(靜態(tài)方法可以訪問(wèn)類屬性,例如 Book.TYPES)

靜態(tài)方法通常用于組織代碼,例如如果認(rèn)為將某個(gè)函數(shù)放到某個(gè)類里,整體代碼會(huì)因此更符合邏輯,于是可以將這個(gè)函數(shù)變成該類的靜態(tài)方法。所以如果需要在類里放一個(gè)函數(shù)進(jìn)去,此函數(shù)不會(huì)用到任何關(guān)于類或?qū)嵗男畔?,那么就可以?@staticmethod 對(duì)其進(jìn)行裝飾。

三種方法中,實(shí)例方法和類方法用得最多,靜態(tài)方法不常用。

class Book:
? ? TYPES = ("hardcover", "paperback") ?# 精裝,平裝
? ? def __init__(self, name, book_type, weight):
? ? ? ? self.name = name
? ? ? ? self.book_type = book_type
? ? ? ? self.weight = weight
? ? def __repr__(self):
? ? ? ? return f"<Book {self.name}, {self.book_type}, weighing {self.weight}g>"
? ? def instance_method(self):
? ? ? ? print(f"Called instance method of {self}")
? ? @classmethod
? ? def class_method(cls):
? ? ? ? print(f"called class method of {cls}")
? ? @classmethod
? ? def hardcover(cls, name, paper_weight): ?# cls 名稱任意,使用 cls 是 convention
? ? ?? ?# 下一行的cls,改成 Book,代碼也能跑,但應(yīng)該寫(xiě)成 cls, 以避免在 inheritance 可能會(huì)遇到的問(wèn)題
? ? ? ? return cls(name, cls.TYPES[0], paper_weight + 100) ?#?
? ? @classmethod
? ? def paperback(cls, name, paper_weight):
? ? ?? ?# 下一行的cls,改成 Book,代碼也能跑,但應(yīng)該寫(xiě)成 cls, 以避免在 inheritance 可能會(huì)遇到的問(wèn)題
? ? ? ? return cls(name, cls.TYPES[1], paper_weight)
? ? @staticmethod
? ? def static_method():
? ? ? ? print("Called static method")
book = Book("Dive into Python", Book.TYPES[1], 800)
# Called instance method of <Book Dive into Python, paperback, weighing 800g>
book.instance_method() ?
# 下一行代碼和上一行完全等價(jià)
# Called instance method of <Book Dive into Python, paperback, weighing 800g>
Book.instance_method(book)?
# called class method of <class '__main__.Book'>
Book.class_method()
# Called static method
Book.static_method()
h_book = Book.hardcover("Harry Potter", 1500)
light = Book.paperback("Python 101", 600)
# <Book Harry Potter, hardcover, weighing 1600g>
print(h_book)
# <Book Python 101, paperback, weighing 600g>
print(light)

到此這篇關(guān)于Python 類方法和靜態(tài)方法之間的區(qū)別的文章就介紹到這了,更多相關(guān)Python類方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyCharm配置第三方鏡像源的解決方法

    PyCharm配置第三方鏡像源的解決方法

    在pycharm中配置第三方鏡像后,秩序搜索需要的第三方庫(kù),就可以使用第三方鏡像下載,速度不是一般的快,這篇文章主要介紹了PyCharm配置第三方鏡像源,需要的朋友可以參考下
    2024-01-01
  • 用python爬取電腦壁紙實(shí)例代碼

    用python爬取電腦壁紙實(shí)例代碼

    大家好,本篇文章主要講的是用python爬取電腦壁紙實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • python 抽象類的使用詳解

    python 抽象類的使用詳解

    這篇文章主要介紹了python 抽象類的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python如何將裝飾器定義為類

    Python如何將裝飾器定義為類

    這篇文章主要介紹了Python如何將裝飾器定義為類,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python使用pyinstaller打包含有g(shù)ettext?locales語(yǔ)言環(huán)境的項(xiàng)目(推薦)

    Python使用pyinstaller打包含有g(shù)ettext?locales語(yǔ)言環(huán)境的項(xiàng)目(推薦)

    最近在用 pyhton 做一個(gè)圖片處理的小工具,順便接觸了gettext,用來(lái)實(shí)現(xiàn)本地化化中英文轉(zhuǎn)換,本文通過(guò)一個(gè)項(xiàng)目給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • python六種基本數(shù)據(jù)類型及常用函數(shù)展示

    python六種基本數(shù)據(jù)類型及常用函數(shù)展示

    這篇文章主要為大家介紹了python六種基本數(shù)據(jù)類型及常用函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • Django 重寫(xiě)用戶模型的實(shí)現(xiàn)

    Django 重寫(xiě)用戶模型的實(shí)現(xiàn)

    這篇文章主要介紹了Django 重寫(xiě)用戶模型的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python復(fù)制Excel表格中指定數(shù)據(jù)若干次的方法

    Python復(fù)制Excel表格中指定數(shù)據(jù)若干次的方法

    本文介紹基于Python語(yǔ)言,讀取Excel表格文件數(shù)據(jù),并基于其中某一列數(shù)據(jù)的值,將這一數(shù)據(jù)處于指定范圍的那一行加以復(fù)制,并將所得結(jié)果保存為新的Excel表格文件的方法,需要的朋友可以參考下
    2024-02-02
  • 寶塔部署django項(xiàng)目的實(shí)現(xiàn)步驟(圖文教程)

    寶塔部署django項(xiàng)目的實(shí)現(xiàn)步驟(圖文教程)

    本文主要介紹了寶塔部署django項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解Python中四種關(guān)系圖數(shù)據(jù)可視化的效果對(duì)比

    詳解Python中四種關(guān)系圖數(shù)據(jù)可視化的效果對(duì)比

    python關(guān)系圖的可視化主要就是用來(lái)分析一堆數(shù)據(jù)中,每一條數(shù)據(jù)的節(jié)點(diǎn)之間的連接關(guān)系從而更好的分析出人物或其他場(chǎng)景中存在的關(guān)聯(lián)關(guān)系。本文將制作四個(gè)不同的關(guān)系圖的可視化效果,感興趣的可以了解一下
    2022-11-11

最新評(píng)論