靜態屬性:把方法變成像屬性一樣調用
未使用靜態屬性的:
class House: owner = "James" def __init__(self,name,width,length,heigh): self.name = name self.width = width self.length = length self.heigh = heigh def cal_area(self): return (self.width * self.length) toilet = House("廁所",90,90,200) print(toilet.cal_area()) print(toilet.owner)
使用靜態屬性后:
class House: owner = "James" def __init__(self,name,width,length,heigh): self.name = name self.width = width self.length = length self.heigh = heigh #有點像裝飾器? @property def cal_area(self): return (self.width * self.length) toilet = House("廁所",90,90,200) #不同就在於我不用執行方法了,cal_area就像是一個可以直接調用的屬性,好處:隱藏了調用的方法邏輯 print(toilet.cal_area) print(toilet.owner)
類方法:不用實例化就可以執行類的方法
class House: owner = "James" def __init__(self,name,width,length,heigh): self.name = name self.width = width self.length = length self.heigh = heigh #不用實例,就可用類本身去調用的方法,就叫類方法 @classmethod def cal_area(self,info): return ("%s" %info) print(House.cal_area("隨便寫點什么嗯嗯"))
靜態方法:名義上的歸屬類管理,類的工具包, 不能使用類變量和實例變量
class House: owner = "James" def __init__(self,name,width,length,heigh): self.name = name self.width = width self.length = length self.heigh = heigh @staticmethod def wash_house(a,b,c): print(a+b+c) #就像是一個普通的方法調用,沒有默認的實例變量或者是類方法中的類變量 House.wash_house(1,2,3) # yangtai = House("陽台",8,10,20) #實例會多出一個yangtai本身的參數,會報錯(沒報,可能是python版本問題) yangtai.wash_house(1,2,3)