物件導向 類方法和靜態方法

2021-08-30 17:29:59 字數 1565 閱讀 6248

1、類方法

是類擁有的方法,需要用裝飾器@classmethod來標識其為類方法,對於類方法,第乙個引數必須是類物件,

一般以cls 作為第乙個引數(當然可以用其他名稱的變數作為其第乙個引數,但是大部分人都習慣以'cls'作為第乙個引數的名字,就最好用'cls'了);能夠通過例項物件和類物件去訪問

class people(object):

country = 'china'

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

@classmethod

def getcountry(cls):

return cls.country

p = people()

print p.getcountry() #可以用過例項物件引用

print people.getcountry() #可以通過類物件引用

類方法還有乙個用途就是可以對類屬性進行修改;

class people(object):

country = 'china'

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

@classmethod

def getcountry(cls):

return cls.country

@classmethod

def setcountry(cls,country):

cls.country = country

p = people()

print p.getcountry() #可以用過例項物件引用

print people.getcountry() #可以通過類物件引用

結果顯示在用類方法對類屬性修改之後,通過類物件和例項物件訪問都發生了改變;

2、靜態方法

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

class people(object):

country = 'china'

@staticmethod

#靜態方法

def getcountry():

return people.country

print people.getcountry()

總結:

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

物件導向 類方法和靜態方法

1.在類定義中,使用 classmethod裝飾器修飾的方法 2.必須至少有乙個引數,且第乙個引數留給了cls,cls指代呼叫者即類自身 3.cls這個識別符號可以是任意合法名稱,但是為了易讀,最好不要修改 4.通過cls可以直接操作類的屬性 1.在類定義中,使用 staticmethod裝飾器修飾...

物件方法的類方法和靜態方法

class animal object leg 四隻腳 definit self,name,colour self.name name self.colour colour staticmethod def run print 喜歡奔跑 classmethod def eat cls print c...

類方法和靜態方法

通過靜態方法和類方法能夠把相關的函式封裝到乙個類裡面,有效的將 組織起來,提高 的可維護性 class date object def init self,year,month,day self.year year self.month month self.day day 普通方法 def ech...