溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中面向?qū)ο箪o態(tài)方法、類方法、屬性方法的示例分析

發(fā)布時間:2021-07-02 10:32:37 來源:億速云 閱讀:148 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“Python中面向?qū)ο箪o態(tài)方法、類方法、屬性方法的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python中面向?qū)ο箪o態(tài)方法、類方法、屬性方法的示例分析”這篇文章吧。

具體如下:

(1)靜態(tài)方法--》-@staticmethod裝飾類中方法

只是名義上歸類管理, 實際上在靜態(tài)方法里訪問不了類或?qū)嵗械娜魏螌傩?/p>

class Dog(object):
  def __init__(self,name):
    self.name = name
  @staticmethod #實際上跟類沒什么關(guān)系了
  def eat(self):
    print("%s is eating %s" %(self.name,'dd'))
  def talk(self):
    print("%s is talking"% self.name)
d = Dog("Td")
d.eat(d)

(2)類方法-----》  @classmethod裝飾類中方法

只能訪問類變量,不能訪問實例變量

  @classmethod
  def eat(self):
    print("%s is eating %s" %(self.name,'dd'))

(3)屬性方法----》 @property #attribute裝飾類中方法

把一個方法變成一個靜態(tài)屬性

 @property #attribute
  def eat(self):
    print("%s is eating %s" %(self.name))
# 調(diào)用
Dog("TD").eat

1.需要將一個值傳遞給eat屬性方法-----修改屬性值?

存在的問題是變成屬性了直接賦值是無法實現(xiàn)的,需要在重新相同的方法,同時將該方法加上@eat.setter進(jìn)行裝飾。

  @property   #attribute
  def eat(self):
    print("%s is eating %s" %(self.name,self.__food))
  @eat.setter
  def eat(self,food):
    print("set to food:",food)
    Self.__food=food

2.刪除屬性---同名方法使用  @eat.deleter修飾

  @property   #attribute
  def eat(self):
    print("%s is eating %s" %(self.name,self.__food))
  @eat.deleter
  def eat(self):
    del self.__food

總結(jié):

1. 通過@staticmethod裝飾器即可把其裝飾的方法變?yōu)橐粋€靜態(tài)方法,什么是靜態(tài)方法呢?其實不難理解,普通的方法,可以在實例化后直接調(diào)用,并且在方法里可以通過self.調(diào)用實例變量或類變量,但靜態(tài)方法是不可以訪問實例變量或類變量的,一個不能訪問實例變量和類變量的方法,其實相當(dāng)于跟類本身已經(jīng)沒什么關(guān)系了,它與類唯一的關(guān)聯(lián)就是需要通過類名來調(diào)用這個方法。

2. 類方法通過@classmethod裝飾器實現(xiàn),類方法和普通方法的區(qū)別是, 類方法只能訪問類變量,不能訪問實例變量。

3. 屬性方法的作用就是通過@property把一個方法變成一個靜態(tài)屬性,調(diào)用時與調(diào)用屬性的方式相同。

   3.1 把一個方法變成靜態(tài)屬性的作用:

當(dāng)某個屬性的值是一系列動作后才得到的結(jié)果。所以每次調(diào)用時,其實它都要經(jīng)過一系列的動作才返回結(jié)果的,但這些動作過程不需要用戶關(guān)心,用戶只關(guān)心得到這個屬性的值即可,也就是說用戶只需要調(diào)用這個屬性就可以了。

   (1)修改屬性值

  將由@proerty裝飾器(把一個方法變成一個靜態(tài)屬性)使用@proerty.setter裝飾器再裝飾一下,此時 你需要寫一個新方法(同名), 對這個屬性值進(jìn)行更改。

   (2)刪除屬性

   #1:將由@proerty裝飾器(把一個方法變成一個靜態(tài)屬性)使用@proerty.deleter裝飾器再裝飾一下,此時 你需要寫一個新方法(同名)。

   #2:使用del刪除該實例所對應(yīng)的屬性方法(屬性) 例如:del 對象.屬性

以上是“Python中面向?qū)ο箪o態(tài)方法、類方法、屬性方法的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI