测开之路八十四:给属性绑定设置,如不允许修改、不允许删除

 

让定义的属性拥有特殊的功能

import datetime


class Test:

    def __init__(self, name, birthday):
        self.name = name
        self.birthday = birthday

 # 把age声明成属性
 @property
 def age(self):
  return datetime.date.today().year - self.birthday.year

 # 设置age不允许赋值
 @age.setter
 def age(self, value):
  raise AttributeError("禁止给age赋值")

 # 设置age不能删除
 @age.deleter
 def age(self):
  raise AttributeError("age不能删除")

 def static_method():
  print("静态函数,逻辑上与实例无关")

 

声明静态方法,与实例无关

# 实例化
t = Test('tom', datetime.date(1993, 1, 1))
Test.static_method() # 类自身调没问题
t.static_method() # 实例化后调用static_method()会报错

 

给属性绑定设置

正常调用属性没问题

 

修改属性时会报自定义错误,不允许修改

 

删除属性时,会报自定义错误

 

posted @ 2019-08-27 15:16  向前走。  阅读(182)  评论(0编辑  收藏  举报