日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中的类方法和静态方法

發布時間:2024/7/5 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中的类方法和静态方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類可以有類屬性,也可以有類方法,類方法主要是對類屬性的封裝。是類對象所擁有的方法,需要用修飾器@classmethod來標識其為類方法,對于類方法,第一個參數必須是類對象,一般以cls作為第一個參數(當然可以用其他名稱的變量作為其第一個參數,但是大部分人都習慣以'cls'作為第一個參數的名字,就最好用'cls'了),能夠通過實例對象和類對象去訪問

?

類方法:

class People(object):

?

??? #類屬性

??? __country = 'china'

?

??? def __init__(self):

??????? self.name = "Edward"

?

??? #類方法,用classmethod來進行修飾

??? @classmethod

??? def getCountry(cls):

??????? return cls.__country

?

??? # 類方法,用classmethod來進行修飾

??? @classmethod

??? def setCountry(cls,country):

??????? cls.__country = country

?

??? #類方法不可使用實例屬性

??? #類方法只能訪問類屬性

??? #@classmethod

??? #def showPerson(cls):

??? #??? print(name)

?

p = People()

print(p.getCountry())??? #可以用過實例對象引用

print(People.getCountry())??? #可以通過類對象引用

print("----------------")

p.setCountry("USA")

print(p.getCountry())??? #可以用過實例對象引用

print(People.getCountry())??? #可以通過類對象引用

?

#p.showPerson()

?

靜態方法:

需要通過修飾器@staticmethod來進行修飾,靜態方法不需要多定義參數.

class People(object):

??? country = 'china'

?

??? @staticmethod

??? #靜態方法

??? def getCountry():

??????? return People.country

?

#靜態方法不可訪問實例屬性

#靜態方法可以訪問類屬性

#通過對象可以訪問靜態方法

#通過類也可訪問靜態方法

print(People.getCountry())

person = People()

print(person.getCountry())

?

總結:

    • 從類方法和實例方法以及靜態方法的定義形式就可以看出來,類方法的第一個參數是類對象cls,那么通過cls引用的必定是類對象的屬性和方法;
    • 而實例方法的第一個參數是實例對象self,那么通過self引用的可能是類屬性、也有可能是實例屬性(這個需要具體分析),不過在存在相同名稱的類屬性和實例屬性的情況下,實例屬性優先級更高;
    • 靜態方法中不需要額外定義參數,因此在靜態方法中引用類屬性的話,必須通過類對象來引用.

總結

以上是生活随笔為你收集整理的python中的类方法和静态方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。