Python @property详解

本文介绍了Python中的@property装饰器,它用于将方法转化为只读属性,防止直接修改属性值。文章详细展示了不带装饰器和使用装饰器的两种方式创建和管理属性,并解释了getter、setter和deleter的作用。同时,还提到了hasattr(),getattr(),setattr()和delattr()这些辅助函数在操作对象属性时的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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: 20
2.使用装饰器
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,否则返回False

getattr():函数用于返回一个对象属性值

语法:
  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--必须是对象的属性
返回值:
  无
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值