1. 程式人生 > >python 面向對象 類方法,靜態方法,property

python 面向對象 類方法,靜態方法,property

() spa 邏輯 prop def pri __init__ icm second

  1. property
    內置裝飾器函數 只在面向對象使用
    把方法當初屬性使用(方法不加參數)
    
    例子:
    class Rectangle:
        def __init__(self,long,wide,color):
            self.long = long
            self.wide = wide
            self.__color = color
    
        @property
        def area(self):
            return long*wide
    
        @property
        def color(self):
            return self.__color
    @color.setter def color(self,new_color): self.__color = new_color @color.deleter def color(self): del self.__color r = Rectangle(10,20,green) print(r.area) r.color = red del r.color
  2. 類方法
    #classmothed
    #把一個方法變成類中的方法,這個方法可以直接被類調用,不需要依托任何對象
    #當這個方法的操作只設計靜態屬性的時候,就該使用classmothed
    例子: class Person: __type = Animal @classmothed def getType(cls): return cls.__type = Animal
  3. 靜態方法
    靜態方法是類中的函數,不需要實例。靜態方法主要是用來存放邏輯性的代碼,主要是一些邏輯屬於類,但是和類本身沒有交互,即在靜態方法中,不會涉及到類中的方法和屬性的操作。可以理解為將靜態方法存在此類的名稱空間中。事實上,在python引入靜態方法之前,通常是在全局名稱空間中創建函數。
    
    
    例子:
    import time
    class TimeTest(object):
        
    def __init__(self,hour,minute,second): self.hour = hour self.minute = minute self.second = second @staticmethod def showTime(): return time.strftime("%H:%M:%S", time.localtime()) print(TimeTest.showTime()) t = TimeTest(2,10,10) nowTime = t.showTime() print(nowTime) 使用靜態函數,既可以將獲得時間的函數功能與實例解綁,我想獲得當前時間的字符串時,並不一定需要實例化對象,此時更像是一種名稱空間。

python 面向對象 類方法,靜態方法,property