property裝飾器 get和 set方法

2021-10-09 00:16:59 字數 1193 閱讀 3135

#簡單測試@property

class

employee

: @property

defsalary

(self)

:return

30000

;emp1=employee(

)print

(emp1.salary)

#列印30000

print

(type

(emp1.salary)

)#列印

#emp1.salary() #報錯:typeerror:'int'object is not callable

#emp1.salary=1000 #@property修飾的屬性,如果沒有加setter方法,則為唯讀屬性。此處修改報錯:attributeerror:can't set attribute

@property主要用於幫助處理屬性的讀操作、寫操作。對於某乙個屬性可以直接通過:emp1.salary=30000

如上的操作讀操作、寫操作。但是這種做法不安全。比如我需要限制薪水必須為1-10000的數字。這時候就需要通過getter、setter方法來處理。

class

employee

:def

__init__

(self,name,salary)

: self.__name = name

self.__salary = salary

@property

defsalary

(self)

:return self.__salary

@salary.setter

defsalary

(self,salary):if

1000

50000

: self.__salary = salary

else

:print

("錄入錯誤!薪水在1000---50000之間"

)emp1 = employee(

"高淇"

,30000

)print

(emp1.salary)

emp1.salary =

2000

print

(emp1.salary)

python 裝飾器和 property裝飾器

裝飾器 1 裝飾器函式的本質 乙個閉包函式 2 裝飾器函式的作用 在不修改原函式及其呼叫方式的情況下對原函式功能進行擴充套件 3 語法糖 格式 裝飾器名稱 4 建立帶返回值的裝飾器 5 建立傳遞引數的裝飾器 6 裝飾器的固定格式 def f definner args,kwargs ret f ar...

內建裝飾器 property

使用 property 閱讀 4164 內建裝飾器 property的基本功能就是把類中的方法當作屬性來訪問 在繫結屬性時,如果我們直接把屬性暴露出去,雖然寫起來很簡單,但是,沒辦法檢查引數,導致可以把成績隨便改 s student s.score 9999這顯然不合邏輯。為了限制score的範圍,...

property裝飾器詳解

property裝飾器,看了好幾個教程都不太理解,知道發現了知乎的這篇好文python property的介紹與使用,終於懂了!下面結合github上的乙個例子,解釋一下這個裝飾器 class person object def init self,name,age 初始化 self.name na...