1. 程式人生 > >Python學習筆記(十八)@property

Python學習筆記(十八)@property

assert value 復雜 blog 只讀 self %d idt 學習

# [email protected]
# 以及一個只讀屬性resolution:

# -*- coding: utf-8 -*-
class Screen(object):
    @property
    def width(self):
        return self._width

    @width.setter
    def width(self, value):
        self._width = value

    @property
    def height(self):
        return
self._height @height.setter def height(self, value): self._height = value @property def resolution(self): return self._width + self._height s = Screen() s.width = 1024 s.height = 768 print(s.resolution) assert s.resolution == 786432, 1024 * 768 = %d ?
% s.resolution

@property的實現比較復雜,我們先考察如何使用。把一個getter方法變成屬性,只需要加上@property就可以了,此時,@property本身又創建了另一個裝飾器@height.setter,負責把一個setter方法變成屬性賦值,於是,我們就擁有一個可控的屬性操作。

Python學習筆記(十八)@property