最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析python 類方法、對(duì)象方法、靜態(tài)方法

 更新時(shí)間:2020年08月15日 11:33:47   作者:學(xué)到老  
這篇文章主要介紹了解析python 類方法、對(duì)象方法、靜態(tài)方法的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

python中實(shí)現(xiàn)靜態(tài)方法和類方法都是依賴于python的修飾器來實(shí)現(xiàn)的。 對(duì)象方法有self參數(shù),類方法有cls參數(shù),靜態(tài)方法是不需要這些附加參數(shù)的。

1、我們已經(jīng)討論了類/對(duì)象可以擁有像函數(shù)一樣的方法,這些對(duì)象方法與函數(shù)的區(qū)別只是一個(gè)額外的self變量

# -*- coding:utf-8 -*-
#!/usr/bin/python
# Filename: method.py

class Person:
grade=1
def __init__(self,name):
self.name = name
def sayHi(self):#加self區(qū)別于普通函數(shù)
print 'Hello, your name is?',self.name

@staticmethod #聲明靜態(tài),去掉則編譯報(bào)錯(cuò);還有靜態(tài)方法不能訪問類變量和實(shí)例變量
def sayName():#使用了靜態(tài)方法,則不能再使用self
print "my name is king"#,grade,#self.name

@classmethod #類方法
def classMethod(cls):
print("class method")

p = Person("king")
p.sayHi()
p.sayName()
p.classMethod()
Person.classMethod()

輸出:

Hello, your name is? king
my name is king
class method
class method

2、靜態(tài)方法

要在類中使用靜態(tài)方法,需在類成員函數(shù)前面加上@staticmethod標(biāo)記符,以表示下面的成員函數(shù)是靜態(tài)函數(shù)。使用靜態(tài)方法的好處是,不需要定義實(shí)例即可使用這個(gè)方法。另外,多個(gè)實(shí)例共享此靜態(tài)方法。

靜態(tài)方法是一類特殊的方法,有時(shí)可能需要寫一個(gè)屬于這個(gè)類的方法,但是這些代碼完全不會(huì)使用到實(shí)例對(duì)象本身,例如:

class Student(object):
 @staticmethod
 def aver_age(x, y):
  return x + y

 def year(self):
  return self.aver_age(self.month, self.day)

這個(gè)例子中,如果把a(bǔ)ver_age作為非靜態(tài)方法同樣可以運(yùn)行,但是它要提供self參數(shù),而這個(gè)參數(shù)在方法中根本不會(huì)被使用到。這里的@staticmethod裝飾器可以給我們帶來一些好處,Python不再需要為Student對(duì)象實(shí)例初始化一個(gè)綁定方法,綁定方法同樣是對(duì)象,但是創(chuàng)建需要成本,而靜態(tài)方法可以避免這些。

Student().year is Student().year
Student().aver_age is Student().aver_age
Student().aver_age is Student.aver_age
False
True
True

可讀性更好的代碼,看到@staticmethod我們就知道這個(gè)方法并不需要依賴對(duì)象本身的狀態(tài)。
可以在子類中被覆蓋,如果是把a(bǔ)ver_age作為模塊的頂層函數(shù),那么繼承自Student的子類就沒法改變Student的aver_age了如果不覆蓋year的話。

3、 類方法

類方法與普通的成員函數(shù)和靜態(tài)函數(shù)有不同之處,在接觸的語言中好像也沒見過這種語義,看它的定義:

一個(gè)類方法就可以通過類或它的實(shí)例來調(diào)用的方法, 不管你是用類來調(diào)用這個(gè)方法還是類實(shí)例調(diào)用這個(gè)方法,該方法的第一個(gè)參數(shù)總是定義該方法的類對(duì)象。

記住:方法的第一個(gè)參數(shù)都是類對(duì)象而不是實(shí)例對(duì)象.
按照慣例,類方法的第一個(gè)形參被命名為 cls.任何時(shí)候定義類方法都不是必須的(類方法能實(shí)現(xiàn)的功能都可以通過定義一個(gè)普通函數(shù)來實(shí)現(xiàn),只要這個(gè)函數(shù)接受一個(gè)類對(duì)象做為參數(shù)就可以了).

class Dog(object):
 food = "gutou"
 age = "1"
 def __init__(self, name):
  self.NAME = name
 @classmethod
 def eat(self,age): #只能是類中的變量
  # print(self.NAME)
  print(age)
  print(self.food)

 @classmethod
 def eat1(self, age): # 只能是類中的變量
  # print(self.NAME)
  age = "2"
  self.food = "tang"
 @staticmethod
 def print_1():
  print(Dog.food, Dog.age)

d = Dog("labuladuo")
d.eat(Dog.age) #通過對(duì)象調(diào)用
Dog.eat(Dog.age) #通過類調(diào)用
print("-----1-----")
d.eat1(Dog.age)
Dog.print_1()
print("--------2-------")
Dog.eat1(Dog.age)
Dog.print_1()

輸出:

1
gutou
1
gutou
-----1-----
('tang', '1')
--------2-------
('tang', '1')

以上就是解析python 類方法、對(duì)象方法、靜態(tài)方法的詳細(xì)內(nèi)容,更多關(guān)于python 類方法、對(duì)象方法、靜態(tài)方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Pycharm遠(yuǎn)程調(diào)試和MySQL數(shù)據(jù)庫授權(quán)問題

    Pycharm遠(yuǎn)程調(diào)試和MySQL數(shù)據(jù)庫授權(quán)問題

    這篇文章主要介紹了Pycharm遠(yuǎn)程調(diào)試和MySQL數(shù)據(jù)庫授權(quán)問題,文章內(nèi)容介紹詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)或工作有所幫助
    2022-03-03
  • Python二維數(shù)組不同初始化方式的差異說明

    Python二維數(shù)組不同初始化方式的差異說明

    這篇文章主要介紹了Python二維數(shù)組不同初始化方式的差異說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 使用Python從PDF中提取圖片和圖片信息(坐標(biāo)、寬度和高度等)

    使用Python從PDF中提取圖片和圖片信息(坐標(biāo)、寬度和高度等)

    PDF文件作為一種廣泛使用的電子文檔格式,不僅包含文字信息,還可能包含各種圖片、圖表等視覺元素,在某些場(chǎng)景下,我們可能需要從PDF文件中提取這些圖片,用于其他用途,這篇博客將探討如何使用Python從PDF中提取圖片以及圖片的相關(guān)信息如坐標(biāo)、寬度和高度等
    2025-02-02
  • python pytest進(jìn)階之xunit fixture詳解

    python pytest進(jìn)階之xunit fixture詳解

    這篇文章主要介紹了python pytest進(jìn)階之xunit fixture詳解,了解unittest的同學(xué)應(yīng)該知道我們?cè)诔跏蓟h(huán)境和銷毀工作時(shí),unittest使用的是setUp,tearDown方法,那么在pytest框架中同樣存在類似的方法,今天我們就來具體說明,需要的朋友可以參考下
    2019-06-06
  • Python學(xué)習(xí)之str重要函數(shù)

    Python學(xué)習(xí)之str重要函數(shù)

    這篇文章主要介紹了Python str重要函數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • django 模型中的計(jì)算字段實(shí)例

    django 模型中的計(jì)算字段實(shí)例

    這篇文章主要介紹了django 模型中的計(jì)算字段實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 用python對(duì)excel查重

    用python對(duì)excel查重

    這篇文章主要介紹了用python對(duì)excel查重的方法,幫助大家更好的利用python處理excel表格,感興趣的朋友可以了解下
    2020-12-12
  • python如何保存文本文件

    python如何保存文本文件

    在本篇文章中小編給大家分享的是關(guān)于python保存文本文件的方法,有需要的朋友們可以參考下。
    2020-06-06
  • Python數(shù)據(jù)可視化教程之Matplotlib實(shí)現(xiàn)各種圖表實(shí)例

    Python數(shù)據(jù)可視化教程之Matplotlib實(shí)現(xiàn)各種圖表實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)可視化教程之利用Matplotlib實(shí)現(xiàn)各種圖表的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2019-01-01
  • Python守護(hù)線程用法實(shí)例

    Python守護(hù)線程用法實(shí)例

    這篇文章主要介紹了Python守護(hù)線程用法,結(jié)合具體實(shí)例形式分析了Python守護(hù)線程的功能、使用方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06

最新評(píng)論

扎兰屯市| 巍山| 龙南县| 大姚县| 天津市| 天津市| 泊头市| 眉山市| 从化市| 吉林省| 安宁市| 凌海市| 安福县| 阿城市| 改则县| 东至县| 英吉沙县| 巴东县| 阳泉市| 名山县| 朝阳区| 将乐县| 庆阳市| 敖汉旗| 社旗县| 渑池县| 始兴县| 克什克腾旗| 齐河县| 兴宁市| 许昌市| 遂川县| 车致| 密云县| 建湖县| 资中县| 鹿邑县| 鄂尔多斯市| 八宿县| 石渠县| 正定县|