17 ### 屬性方法

jhchena發表於2024-09-27
屬性方法寫法
# 屬性方法寫法1
class Info:
    @property  # 變成屬性方法
    def get_name(self):
        return '123'

    @get_name.setter  # 給屬性方法,增加一個setter方法,setter 表示設定
    def get_name(self, vaule):
        print('設定', vaule)

    @get_name.deleter  # 給屬性方法,增加一個 deleter 方法,deleter 表示刪除
    def get_name(self, vaule):
        pass


obj = Info()
ret = obj.get_name  # 不是屬性方法呼叫:obj.get_name(),變成屬性方法時,呼叫時不需要在後面加()
print(ret)
obj.get_name = 999  # 這種語法時,此時就會自動呼叫get_name中的setter方法
print(ret)

del obj.get_name  # 會自動呼叫get_name裡面的 deleter方法
print(ret)


# 屬性方法寫法2,在開發中使用比較少,在web django框架中,使用比較多


class Info:
    # 變成屬性方法
    def getx(self):
        return '123'

    # 給屬性方法,增加一個setter方法,setter 表示設定
    def setx(self, vaule):
        print('設定', vaule)

    # 給屬性方法,增加一個 deleter 方法,deleter 表示刪除
    def delx(self):
        pass

    x = property(getx, setx, delx)


obj = Info()
obj.x  # 會自動呼叫:getx 方法
obj.x = 123  # 會自動呼叫: setx 方法

del obj.x  # 會自動呼叫: delx 方法

{{uploading-image-866291.png(uploading...)}}

相關文章