標籤:dog 參數 注意 self obj name int def assm
常規:
1 class Dog(object):2 def __init__(self,name):3 self.name=name4 5 def eat(self):6 print(‘%s is eating‘%self.name)7 8 d1=Dog(‘lele‘)9 d1.eat()
1.靜態方法:名義上由類管理,而實際在調用時,需要手動把執行個體對象傳進去作參數
1 class Dog(object):2 def __init__(self,name):3 self.name=name4 @staticmethod5 def eat(self):6 print(‘%s is eating‘%self.name)7 8 d1=Dog(‘lele‘)9 d1.eat(d1)
2.類方法:只能訪問類變數,不能訪問執行個體變數
1 class Dog(object): 2 name=‘xiaomei‘ 3 def __init__(self,name): 4 self.name=name 5 6 @classmethod 7 def eat(self): 8 print(‘%s is eating‘%self.name) 9 10 d1=Dog(‘lele‘)11 d1.eat()
執行個體變數name=‘lele‘,類變數name=‘xiaomei‘。
調用結果為:xiaomei is eating
3.屬性方法:把一個方法變為一個靜態屬性(用途:使用者只需要知道查詢結果(調用屬性),而複雜的實現過程不需要使用者知道。eg:第三方查詢航班)
1 class Dog(object): 2 def __init__(self,name): 3 self.name=name 4 5 6 @property 7 def eat(self): 8 print(‘%s is eating‘%self.name) 9 10 d1=Dog(‘lele‘)11 d1.eat
lele is eating
若要增加參數,可以通過 @屬性方法名.setter 來實現
class Dog(object): def __init__(self,name): self.name=name self.__food=None #將一個方法變為靜態屬性 @property def eat(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 def eat(self): del self.__food print(‘已刪除‘)d1=Dog(‘lele‘)d1.eatd1.eat=‘gutou‘ #變成靜態屬性後,注意賦值方式d1.eatdel d1.eat
lele is eating None
lele is eating gutou
lele is eating gutou
已刪除
python靜態方法、類方法