常規:
1class
dog(object):
2def
__init__
(self,name):
3 self.name=name45
defeat(self):
6print('
%s is eating
'%self.name)
78 d1=dog('
lele')
9 d1.eat()
1.靜態方法:名義上由類管理,而實際在呼叫時,需要手動把例項物件傳進去作引數
1class
dog(object):
2def
__init__
(self,name):
3 self.name=name
4@staticmethod
5def
eat(self):
6print('
%s is eating
'%self.name)
78 d1=dog('
lele')
9 d1.eat(d1)
2.類方法:只能訪問類變數,不能訪問例項變數
1class
dog(object):
2name='xiaomei'
3def
__init__
(self,name):
4 self.name=name56
@classmethod
7def
eat(self):
8print('
%s is eating
'%self.name)
910 d1=dog('
lele')
11 d1.eat()
例項變數name='lele',類變數name='xiaomei'。
呼叫結果為:xiaomei is eating
3.屬性方法:把乙個方法變為乙個靜態屬性(用途:使用者只需要知道查詢結果(呼叫屬性),而複雜的實現過程不需要使用者知道。eg:第三方查詢航班)
1class
dog(object):
2def
__init__
(self,name):
3 self.name=name45
6@property
7def
eat(self):
8print('
%s is eating
'%self.name)
910 d1=dog('
lele')
11 d1.eat
lele is eating
若要增加引數,可以通過 @屬性方法名.setter 來實現
classdog(object):
def__init__
(self,name):
self.name=name
self.
__food=none
#將乙個方法變為靜態屬性
@property
defeat(self):
print('
%s is eating %s
' % (self.name,self.__food
))
#更改屬性方法
@eat.setter
def eat(self,food): #
增加了引數
self.__food=food
print('
%s is eating %s
' % (self.name, self.__food
))
#刪除屬性方法
@eat.deleter
defeat(self):
del self.__food
print('
已刪除'
)d1=dog('
lele')
d1.eat
d1.eat
='gutou'
#變成靜態屬性後,注意賦值方式
d1.eat
del d1.eat
lele is eating none
lele is eating gutou
lele is eating gutou
已刪除
Python 類方法 靜態方法
1 我們已經討論了類 物件可以擁有像函式一樣的方法,這些物件方法與函式的區別只是乙個額外的self變數 coding utf 8 usr bin python filename method.py class person grade 1 def init self,name self.name n...
Python 靜態方法 類方法
一 靜態方法 乙個不能訪問例項變數和類變數的方法,它與類唯一的關聯就是需要通過類名來呼叫這個方法。class person object def init self,name self.name name def eat self print s is eating self.name static...
Python普通方法 靜態方法 類方法
coding utf 8 普通方法,類方法,靜態方法的區別 metaclass type class tst name tst data this is data 普通方法 defnormalmethod self,name print self.data,name 類方法,可以訪問類屬性 clas...