亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Python 面向?qū)ο缶幊蘋OP (三) 類方法,靜態(tài)方法

JerryZou / 2634人閱讀

摘要:類的方法概覽首先回顧一下常見的三種方法實(shí)例接口方法類方法靜態(tài)方法標(biāo)準(zhǔn)書寫方式如下我們最常用的其實(shí)就是普通的接口方法,其他兩個(gè)需要用類似裝飾器的寫法來標(biāo)注。類方法接受一個(gè)作為參數(shù),它是指向本身的,并不是所創(chuàng)建的實(shí)例。

類的方法概覽

首先回顧一下Python OOP常見的三種方法:

instance method 實(shí)例/接口方法

class method 類方法

static method 靜態(tài)方法

標(biāo)準(zhǔn)書寫方式如下:

class MyClass:
    def method(self):
        return "instance method called", self

    @classmethod
    def classmethod(cls):
        return "class method called", cls

    @staticmethod
    def staticmethod():
        return "static method called"

我們最常用的其實(shí)就是普通的接口方法,其他兩個(gè)需要用類似裝飾器的寫法來標(biāo)注。

類方法接受一個(gè)cls作為參數(shù),它是指向MyClass本身的,并不是MyClass所創(chuàng)建的實(shí)例。

靜態(tài)方法不接受self或者cls作為參數(shù),所以不會(huì)修改類本身或者實(shí)例

類方法示例

看一下如何使用類方法,新建一個(gè)Pizza類,主要參數(shù)為原料ingredients

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f"Pizza({self.ingredients !r})"

新建一個(gè)實(shí)例測(cè)試一下:

Pizza(["cheese", "tomatoes"])
Out: Pizza(["cheese", "tomatoes"])

測(cè)試成功。
現(xiàn)在問題來了,既然是Pizza類,會(huì)有不同口味的Pizza,他們的配方都是固定的,那么如何便捷的生成不同口味的Pizza呢,答案就是classmethod

class Pizza:
    def __init__(self, ingredients):
        self.ingredients = ingredients

    def __repr__(self):
        return f"Pizza({self.ingredients!r})"

    @classmethod
    def margherita(cls):
        return cls(["mozzarella", "tomatoes"])

    @classmethod
    def prosciutto(cls):
        return cls(["mozzarella", "tomatoes", "ham"])

類方法可以根據(jù)需求事先預(yù)定義生成的實(shí)例,減少了代碼量,這里我們根據(jù)margherita和prosciutto兩種口味pizza的原料提前準(zhǔn)備好了,cls就是代表類本身,這樣如果我們?cè)偕梢恍?shí)例時(shí),會(huì)方便很多:

#生成一個(gè)margherita口味的pizza
m = Pizza.margherita()
m
Out:Pizza(["mozzarella", "tomatoes"])
#生成一個(gè)prosciutto口味的pizza
p = Pizza.prosciutto()
p
Out:Pizza(["mozzarella", "tomatoes", "ham"])
靜態(tài)方法示例

那么什么時(shí)候用靜態(tài)方法呢? 比如還用這個(gè)例子,我想計(jì)算pizza的面積:

import math

class Pizza:
    def __init__(self, radius, ingredients):
        self.radius = radius
        self.ingredients = ingredients

    def __repr__(self):
        return (f"Pizza({self.radius!r}, "
                f"{self.ingredients!r})")

    def area(self):
        return self.circle_area(self.radius)

    @staticmethod
    def circle_area(r):
        return r ** 2 * math.pi

這種情況下使用一個(gè)靜態(tài)方法是一個(gè)好的選擇,通過area這個(gè)普通的接口方法,可以調(diào)用circle_area來計(jì)算面積,封裝性更好:

p = Pizza(4, ["mozzarella", "tomatoes"])
p.area() 

Out: 50.26548245743669
總結(jié)

這次簡(jiǎn)單總結(jié)了類中的三種方法,通過Pizza類的實(shí)例方便理解,如果大家有想和我溝通交流的,歡迎留言,或者點(diǎn)擊以下鏈接訪問我的網(wǎng)站:

我的Github 靜態(tài)博客

謝謝閱讀

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/45182.html

相關(guān)文章

  • Python OOP 面向對(duì)象編程

    摘要:時(shí)代,如果需要手動(dòng)繼承,如多態(tài)多態(tài)是指,不同的子類對(duì)象調(diào)用相同的父類方法,會(huì)產(chǎn)生多態(tài)多樣結(jié)果的編程特性。 參考:黑馬程序員教程 - Python基礎(chǔ) 面向?qū)ο?OOP三大特性,且三個(gè)特性是有順序的: 封裝 繼承 多態(tài) 封裝 指的就是把現(xiàn)實(shí)世界的事務(wù),封裝、抽象成編程里的對(duì)象,包括各種屬性和方法。這個(gè)一般都很簡(jiǎn)單,不需要多講。 唯一要注意的就是:推薦從小往大開始封裝、開發(fā)類。比如手槍...

    weknow619 評(píng)論0 收藏0
  • 【數(shù)據(jù)科學(xué)系統(tǒng)學(xué)習(xí)】Python # 編程基礎(chǔ)[]

    摘要:新的稱為子類,而被繼承的稱為基類父類或超類。繼承最大的好處是子類獲得了父類的全部功能。在繼承關(guān)系中,如果一個(gè)實(shí)例的數(shù)據(jù)類型是某個(gè)子類,那它的數(shù)據(jù)類型也可以被看做是父類。 在上一篇中我們介紹了模塊和數(shù)據(jù)結(jié)構(gòu),這一篇將介紹面向?qū)ο缶幊獭? 面向?qū)ο缶幊?面向?qū)ο缶幊獭狾bject Oriented Programming,簡(jiǎn)稱 OOP,是一種程序設(shè)計(jì)思想。OOP 把對(duì)象作為程序的基本單元...

    molyzzx 評(píng)論0 收藏0
  • [零基礎(chǔ)學(xué)python]關(guān)于的初步認(rèn)識(shí)

    摘要:反對(duì)者在某些領(lǐng)域?qū)Υ擞枰苑裾J(rèn)。下面再引用一段來自維基百科中關(guān)于的歷史。類的更嚴(yán)格的定義是由某種特定的元數(shù)據(jù)所組成的內(nèi)聚的包。類還可以有運(yùn)行時(shí)表示形式元對(duì)象,它為操作與類相關(guān)的元數(shù)據(jù)提供了運(yùn)行時(shí)支持。 在開始部分,請(qǐng)看官非常非常耐心地閱讀下面幾個(gè)枯燥的術(shù)語解釋,本來這不符合本教程的風(fēng)格,但是,請(qǐng)看官諒解,因?yàn)榱形粚硪欢ㄒ喿x枯燥的東西的。這些枯燥的屬于解釋,均來自維基百科。 1、問題...

    王巖威 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對(duì)象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<