1. 要解决的问题: 想要快速的访问类中的私有属性,但是不想直接暴露出原来类中的属性

@property    

def tick(self):        

  return self._tick

 

2. 经典例子

# property decorator make defining and modifying class's property easy
class Student:
    @property
    def score(self):
        return self.__score

    @score.setter
    def score(self, score):
        if isinstance(score, int):
            self.__score = score
        else:
            raise TypeError('score must be int')


if __name__ == '__main__':
    s = Student()
    s.score = 'jjj'
    print(s.score)

 

3.  直接使用类的方法名字, 而不是直接使用类的属性

class Student:
    def __init__(self, score):
        self.__score = score

    def set_score(self, set_score):
        self.__score = set_score

    @property
    def return_score(self):
        return self.__score


if __name__ == '__main__':
    s = Student(4)
    print(s.return_score)
    s.set_score(44)
    print(s.return_score)


4.计算运行函数的时间差

start_time = time.perf_counter()
download_all(sites)
end_time = time.perf_counter()
print('Download {} sites in {} seconds'.format(len(sites), end_time - start_time))

 

用一个例子来演示会更加清晰