STUNUM

面有萌色,胸有丘壑。心有猛虎,细嗅蔷薇。

嗨,我是王鑫 (@stunum),一名 Python 开发者。


Python web开发,后端以Django框架为主,前端使用Vue.js...

pyton标准库装饰器——property

Python内置的 @property 装饰器就是负责把一个方法变成属性调用的。 举个例子: 传统的类的属性读写方式如下

class Student(object):
    def __init__(self,num):
        self._score=num
    def get_score(self):
        return self._score
    
    def set_score(self,num):
        self._score=num

>>>stu=Student(60)
>>>stu.get_score()
60
>>>stu.set_score(90)
>>>stu.get_score()
90

使用了 @property 装饰方法后的读写方式如下:

class Student(object):
    def __init__(self,num):
        self._score=num

    @property
    def score(self,num):
        return self._score
    
    @score.setter
    def score(self,num):
        self._score=num


>>> stu=Student(60)
>>> stu.score    #读取stu对象的score值
60
>>> stu.score=90 #设置score的值为90
>>> stu.score    #读取stu对象的score值
90

如果不设置 setter 方法的话,那么 score 就只有只读属性。

最近的文章

python深度优先算法

深度优先算法…

水滴石穿继续阅读
更早的文章

python中__init__()、 __call__()、 __new__()、 __del__()方法的作用

根据python的对象从创建到销毁的顺序讲__new__() -> __init__() -> __call__() -> __del__()class Person(object): def __new__(cls,[,*args [,**kwargs]]): return super().__new__(cls,[,*args [,**kwargs]]) def __init__(self,[,*args [,**kwargs]]): ...…

水滴石穿继续阅读