靜態屬性:函數
既能夠訪問實例屬性也能夠訪問類屬性(self)工具
1 # --------------靜態屬性:數據屬性----------
2 class Room: 3 def __init__(self,name,owner,width,length,height): 4 self.name=name 5 self.owner=owner 6 self.width=width 7 self.length=length 8 self.height=height 9 @property 10 def area_room(self): 11 print('%s住的%s房間的面積是%s' %(self.name,self.owner,self.width*self.length)) 12 return self.length*self.width 13 r1=Room('大樹','501',3,8,5) 14 r2=Room('果果','502',10,10,5) 15 # print('%s住的%s房間面積是%s' %(r1.name,r1.owner,r1.width*r1.length))
16 # r1.area_room()
17 # r2.area_room()
18
19 #封裝屬性
20 print(r1.area_room) 21 print(r2.area_room) 22 print(r1.name) 23 print(r2.name)
類方法:this
@classmethod 參數默認爲cls-->類 能夠訪問類屬性spa
# -------------------------類方法:數據屬性和函數屬性--------------------- # 調用時不與任何實例捆綁 # 類級別的操做 與實例無關 不能訪問實例屬性
class Room: tag=1
def __init__(self,r_numb,owner,length,width,heigh): self.r_numb=r_numb self.owner=owner self.length=length self.width=width self.heigh=heigh @classmethod#類方法加classmethod
def tell_info(cls): print('this is a test') print(cls.tag) Room.tell_info()#類調用本身的方法 self參數問題
靜態方法:code
@staticmethod 不能訪問類屬性和實例屬性blog
# -----------------------靜態方法-------------------- # class Room: def __init__(self,name,owner,width,length,height): self.name=name self.owner=owner self.width=width self.length=length self.height=height @property def area_room(self): return self.length * self.width @classmethod # 類方法加classmethod
def tell_info(cls): print('this is a test') print(cls.tag) # 靜態方法:類的工具包 不與類、實例綁定,不能使用類變量和實例變量
@staticmethod def bathe(): print('洗澡') #test()函數無心義
def test(x,y):#實例沒辦法調用此函數 r1.test(1,2)
print(x+y) # print(Room.__dict__) # r1=Room('102','大樹',10,3,4)
Room.bathe()