Python @property详解
Python @property详解
Python的装饰器,用来修饰方法,使调用方法变成读取属性
作用:
使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改
使用方式:
1.不带装饰器
语法:class property([fget[, fset[, fdel[, doc]]]])
参数
fget -- 获取属性值的函数
fset -- 设置属性值的函数
fdel -- 删除属性值函数
doc -- 属性描述信息
class test(object):
	def __init(self):
        self.__num = 0
    def getNum(self):
        return self.__num
   	def setNum(self,value):
        self.__num = value
    def delNum(self):
        del self.__num
    num = property(getNum,setNum,delNum)
    # num = proper
print('test.num:', test.num)
test.num = 20
print('test.num:', test.num)
>>test.num: <property object at 0x000001E183216728>
>>test.num: 202.使用装饰器
class test(object):
  def __init__(self):
      self.__num=0
  @property
  def num(self):
  	return self.__num
 	@num.setter
  def num(self.value):
      # 类型检查
  	if not isinstance(value,int):
          raise TypeError("Expected a string")
       self.__num = value
  @num.deleter
  def num(self):
      del self.__num
print('test_2.num:', test_2.num)
test.num = 90
print('test_2.num:', test_2.num)
print("判断是否有对应属性:",hasattr(test,"num"))
>>test.num: <property object at 0x0000016AD4B8E2C8>
>>test.num: 90
>>判断是否有对应属性: True
hasattr() getattr() getattr() setattr()
hasattr():函数用于判断是否包含对应的属性
语法:
  hasattr(object,name)
参数:
  object--对象
  name--字符串,属性名
返回值:
  如果对象有该属性返回True,否则返回Falsegetattr():函数用于返回一个对象属性值
语法:
  getattr(object,name,default)
参数:
  object--对象
  name--字符串,对象属性
  default--默认返回值,如果不提供该参数,在没有对于属性时,将触发AttributeError。
返回值:
  返回对象属性值setattr():函数用于设置属性值,该属性必须存在
语法:
  setattr(object,name,value)
 参数:
  object--对象
  name--字符串,对象属性
  value--属性值
返回值:
  无delattr():函数用于删除属性
delattr(x,'foobar)相当于del x.foobar
语法:
  setattr(object,name)
参数:
  object--对象
  name--必须是对象的属性
返回值:
  无Python @property详解
      https://centyuan.github.io/2023/11/06/Python从入门到放弃/Python @property详解/