Python_靜態屬性,類方法,靜態方法


靜態屬性:把方法變成像屬性一樣調用

未使用靜態屬性的:

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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM