# Python property ###### tags: `python` `property` ```python= class Password(): def __init__(self): self._password = None def set_password(self, value): self._password = value def get_password(self): return self._password ``` 上面是一個很簡單的類別,正常來說,在建置類別的時候我們會建置一個建構子,然後對各屬性做set、get的設置,然後實作類別的時候再各別透過set去做屬性賦值,再透過get去取值。 ```shell= >>> from test_password import Password >>> p = Password() >>> p.set_password('testpass') >>> p.get_password() 'testpass' ``` 但是這樣的步驟太繁雜了,追求優美的python不會原諒這種事情發生的。 也因此有了property這個函數的產生,透過property我們將上面的案例調整下! ```python= class Password(): def __init__(self): self._password = None def set_password(self, value): self._password = value def get_password(self): return self._password # property(get, set, del) password = property(get_password, set_password) ``` 直覺來說,property就是用來協助我們將諸多的get、set、del轉成一個屬性來操作,既然轉成屬性了,就簡單多了。 ```shell= >>> p=Password >>> p=Password() >>> p.password=100 >>> p.password 100 ``` 上面案例可以看到,我們只針對password來操作,可以設定數值,也可以直接取得數值。 只是,這樣子對部份人來說還是不能滿足,他們希望可以用裝飾器來處理! ```python= class Password(): def __init__(self): self._password = None @property def password(self): return self._password @password.setter def password(self, value): self._password = value ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up