改用self.is_cached替换ClassPropertyDescriptor, 后者在类上使用装饰器时会失效